2015-11-13 6 views
-1

Я хочу создать класс «func» как друга класса «node». но, к сожалению, функции в классе func не могут получить доступ к закрытым членам класса node.for например, в функции «expand» я получаю сообщение об ошибке, в котором указано, что n не определено. Поскольку я новичок в программировании, не могли бы вы рассказать мне, в чем проблема?класс друга не может быть распознан

#include<iostream> 
using namespace std; 
#define max 9 //we use a const 

class node 
{ 
private: 
    int n[max]; 
    friend class func; 
}; 

class func 
{ 
public: 
    bool isgoal(int); 
    bool isvalid(int); 
    void expand(); 
}; 

расширить функции:

void func::expand() 
{ 
    for(int i=0;i<=8;i++) 
    { 
     n[i]=0; 
    } 
} 

Другая проблема заключается в том, что, когда я хочу сделать копию класса «узла», чтобы скопировать членов массива п в него с этим кодом:

void func::expand() 
    { 
     node b=n; 
} 

он говорит, что «конструктор не может преобразовать из межд [9] к узлу

как я могу скопировать меня mbers of n в массив temp в этой программе?

+0

'void node :: expand' Класс' node' не имеет члена с именем 'expand' –

+0

' n' является нестационарным членом данных 'node'. Вам нужен экземпляр 'node' для доступа к этому элементу. –

+0

, но я определил его в узле класса, и поскольку node и func являются друзьями, расширение должно иметь к нему доступ. –

ответ

0

, но, к сожалению, функции в классе Func не могут получить доступ к частным членам класса узла

Friend класс Func могут действительно могут получить доступ к закрытым членам экземпляра узла. Но ваши методы func не предоставили никакой информации о том, какой экземпляр узла они могут получить.

Вы можете изменить

bool isgoal(int); 

в

bool isgoal(int, node*); 

bool isgoal(int, node&); 

или предоставить узел * экземпляр как часть класса FUNC, который должен быть инициализирован.

+0

Другими словами, представьте, что у вас 500 экземпляров узла и 5 экземпляров func. Ваш код должен сообщить компилятору, к какому экземпляру узла можно получить доступ, используя какой-либо конкретный экземпляр func. –

Смежные вопросы