我有一个奇怪的错误,说我的类正在重新定义,源于我的Node类中的朋友声明.这是我目前的代码:
template <class T>
class Node {
private:
T val;
Node<T> * next;
public:
friend class OList;
};
Run Code Online (Sandbox Code Playgroud)
我的其他课程:
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;
}
Run Code Online (Sandbox Code Playgroud)
OList它不是一个类,它是一个类模板.您可以与模板的所有特化相关联:
template <typename> friend class OList;
Run Code Online (Sandbox Code Playgroud)
或朋友具体专业化:
friend class OList<T>;
Run Code Online (Sandbox Code Playgroud)
这将需要OList已经宣布.在定义之前提出前瞻性声明Node:
template <typename> class OList;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |