C++ 奇怪的类重新定义错误
我有一个奇怪的错误,说我的类被重新定义了,源于我的节点类中的友元声明。以下是我当前的代码:C++ 奇怪的类重新定义错误,c++,templates,C++,Templates,我有一个奇怪的错误,说我的类被重新定义了,源于我的节点类中的友元声明。以下是我当前的代码: template <class T> class Node { private: T val; Node<T> * next; public: friend class OList; }; 模板 类节点{ 私人: T值; 节点*下一步; 公众: 友邦主义者; }; 我的其他班级: template <class T> class O
template <class T>
class Node {
private:
T val;
Node<T> * next;
public:
friend class OList;
};
模板
类节点{
私人:
T值;
节点*下一步;
公众:
友邦主义者;
};
我的其他班级:
template <class T>
class OList { ------> Error here
private:
Node<T> * head;
int size;
public:
OList();
OList(const OList<T> &b);
~OList();
clear();
int size();
T tGet(int input);
int count(T input);
insert (T input);
remove (T input);
uniquify(T input);
Node<T> * returnHead();
};
// Constructs empty list
template <class T>
OList<T>::OList() { ---> Error here
head = NULL;
size = 0;
}
模板
类OList{----------->此处有错误
私人:
节点*头;
整数大小;
公众:
寡头();
警察局(警察局);
~OList();
清除();
int size();
T tGet(int输入);
整数计数(T输入);
插入(T输入);
删除(T输入);
统一(T输入);
节点*returnHead();
};
//构造空列表
模板
OList::OList(){->此处有错误
head=NULL;
尺寸=0;
}
OList
不是一个类,它是一个类模板。您可以将模板的所有专门化交朋友:
template <typename> friend class OList;
此外,友元声明不能引用部分专门化
来源:谢谢。然而,这给了我一个非模板类显式专门化的错误。感谢您在修复了其他一些问题后,这项工作得以完成。
friend class OList<T>;
template <typename> class OList;