我在学习数据结构--C++书时,输入编译有错误在(vc5.0下编译),按书写的方式为“friend SimSpace<T>;” 我把它改为“friend class SimSpace<T>;”也不行,不知为什么。源码如下:tempalte <class T>
class Node
{
friend class SimSpace<T>;
public:
Node();
~Node();
private:
T m_Data;
int m_iLink;
};class SimSpace
{
public:
SimSpace(int iNode=100);
~SimSpace(); //others ignored
//....
private:
Node<T> *m_lpElement;
int m_iNodeNums;
};
class Node
{
friend class SimSpace<T>;
public:
Node();
~Node();
private:
T m_Data;
int m_iLink;
};class SimSpace
{
public:
SimSpace(int iNode=100);
~SimSpace(); //others ignored
//....
private:
Node<T> *m_lpElement;
int m_iNodeNums;
};
申明了friend 就可以访问class NODE 里的私有成员变量
这样就可以保证NODE不会被其他无关人员访问
“friend SimSpace<T>;” 不要加class
但是在CLASS NODE 之前要申明 CLASS SimSpace
在C++中node类前面不需先申明SimSpace符号。
改为 friend T