我的node
课程需要相应的linked
课程才能成为朋友。我把它写成
template <typename T>
class node{
T value;
node<T> *next;
friend class linked<T>;
};
template <typename T>
class linked{
linked();
~linked();
node<T> *head;
};
我收到编译错误,抱怨linked
不是类模板。如何声明linked<T>
成为node<T>
的朋友?
答案 0 :(得分:3)
如果您想使用相同的模板参数linked
将T
的实例化作为朋友,则需要首先转发声明类模板linked
。
// forward declaration
template <typename T>
class linked;
template <typename T>
class node {
...
friend class linked<T>;
// or since C++11 you can
friend linked<T>;
};
template <typename T>
class linked {
...
};
答案 1 :(得分:1)
在Node类中使用它之前,必须声明如下链接的类。但是你的代码看起来比这个问题更麻烦。而且我不确定你究竟在尝试什么。
template <typename T>
class linked;
template <typename T>
class node{
private:
T value;
node<T> *next;
friend class linked<T>;
};
答案 2 :(得分:0)
错误是语句friend class linked<T>;
出现的地方,linked
类尚未声明。在class node
之前添加以下内容。
template <typename T>
class linked;