无法识别朋友类

时间:2015-11-13 15:55:02

标签: c++ visual-studio-2012

我想制作" 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的成员复制到临时数组中?

1 个答案:

答案 0 :(得分:0)

  

但遗憾的是func类中的函数无法访问private   节点类的成员

Friend类func确实可以访问节点实例的私有成员。但是,您的func方法没有提供有关他们可能访问的节点实例的信息。

您可以更改

bool isgoal(int);

bool isgoal(int, node*);

bool isgoal(int, node&);

或提供节点*实例作为类func的一部分,必须对其进行初始化。