无法识别友元类

friend class cannot be recognized

本文关键字:友元 识别      更新时间:2023-10-16

我想让"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的一部分,该类必须初始化。