无法识别友元类
friend class cannot be recognized
我想让"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;
}
}
另一个问题是,当我想复制类"node"以将数组n的成员复制到其中时,使用以下代码:
void func::expand()
{
node b=n;
}
它说"构造函数不能从int[9]转换为节点
如何在这个程序中将n的成员复制到临时数组中?
但不幸的是,func类中的函数无法访问private节点类的成员
友元类func确实可以访问节点实例的私有成员。但是您的func方法没有提供任何关于它们可能访问哪个节点实例的信息。
您可能会更改
bool isgoal(int);
至
bool isgoal(int, node*);
bool isgoal(int, node&);
或者提供node*实例作为类func的一部分,该类必须初始化。
相关文章:
- C++模板来检查友元函数的存在
- 模板类无法识别友元运算符
- 如何使用单独文件中的派生类访问友元函数对象
- 模板化的类和友元函数
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- 如何在嵌套类中正确使用友元声明?
- 友元函数无法访问私有数据成员 (c++)
- 继承和友元函数,从基类访问受保护的成员
- 将子类方法声明为基类的友元
- 如何在友元函数中使用静态成员而不添加前缀 [类名]::
- 在将函数声明为友元时,尖括号的含义是什么?
- 在模板类之外定义友元函数的正确方法是什么?
- 2个模板化类的非模板友元函数未定义引用错误
- 友元方法作为常量
- C++ 友元函数和私有构造函数
- 使第二个类的构造函数成为第一个类中的友元函数
- 在为嵌套类定义行外友元时,我真的必须打破封装吗?
- 未定义的类模板不会实例化以检查友元函数
- C++类中的友元函数有问题?
- 无法识别友元类