我想制作" func"作为" node"的朋友。类。但不幸的是,func类中的函数无法访问节点类的私有成员。例如,在函数" 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;
}
}
另一个问题是,当我想制作一个班级&#34;节点&#34;为了使用以下代码将数组n的成员复制到其中:
void func::expand()
{
node b=n;
}
它说&#34;构造函数不能从int [9]转换为node
如何在此程序中将n的成员复制到临时数组中?
答案 0 :(得分:0)
但遗憾的是func类中的函数无法访问private 节点类的成员
Friend类func确实可以访问节点实例的私有成员。但是,您的func方法没有提供有关他们可能访问的节点实例的信息。
您可以更改
bool isgoal(int);
到
bool isgoal(int, node*);
bool isgoal(int, node&);
或提供节点*实例作为类func的一部分,必须对其进行初始化。