我收到一个奇怪的错误消息,说我的类正在重新定义,这是由于Node类中的friend声明引起的。这是我当前的代码:
template <class T>
class Node {
private:
T val;
Node<T> * next;
public:
friend class OList;
};
我的其他任何类(class):
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
不是一个类,它是一个类模板。您可以将模板的所有专业领域作为 friend :
template <typename> friend class OList;
或与特定专业的 friend :
friend class OList<T>;
这将要求已经声明了
OList
。在Node
的定义之前放置一个前向声明:template <typename> class OList;
关于c++ - 奇怪的类重新定义错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26898186/