Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模板类中的好友模板类 我用C++学习数据结构。我将代码复制到我的计算机中,就像书中告诉我的那样,但是编译器显示Chain不是类模板 template <class T> class ChainNode{ friend class Chain<T>; private: T data; ChainNode<T> *link; }; template <class T> class Chain{ public: Chain(){ first = 0; } ~Chain(); bool isEmpty() const { return first == 0;} int Length() const; bool Find(int k, T &x) const; int Search(const T &x) const; Chain<T>& Delete(int k, T &x); Chain<T>& Insert(int k, const T &x); void Output(ostream &out) const; private: ChainNode<T> *first; //指向第一个节点的指针 }; 模板 类链节点{ 朋友类链; 私人: T数据; 链节点*链接; }; 模板 类链{ 公众: Chain(){first=0;} ~Chain(); bool isEmpty()常量{return first==0;} int Length()常量; 布尔查找(整数k、T&x)常数; 整数搜索(常量T&x)常量; 链和删除(int k、T和x); 链和插入件(内部k、常数T和x); 无效输出(ostream&out)常数; 私人: 链节点*第一//指向第一个节点的指针 };_C++_Templates_Friend - Fatal编程技术网

模板类中的好友模板类 我用C++学习数据结构。我将代码复制到我的计算机中,就像书中告诉我的那样,但是编译器显示Chain不是类模板 template <class T> class ChainNode{ friend class Chain<T>; private: T data; ChainNode<T> *link; }; template <class T> class Chain{ public: Chain(){ first = 0; } ~Chain(); bool isEmpty() const { return first == 0;} int Length() const; bool Find(int k, T &x) const; int Search(const T &x) const; Chain<T>& Delete(int k, T &x); Chain<T>& Insert(int k, const T &x); void Output(ostream &out) const; private: ChainNode<T> *first; //指向第一个节点的指针 }; 模板 类链节点{ 朋友类链; 私人: T数据; 链节点*链接; }; 模板 类链{ 公众: Chain(){first=0;} ~Chain(); bool isEmpty()常量{return first==0;} int Length()常量; 布尔查找(整数k、T&x)常数; 整数搜索(常量T&x)常量; 链和删除(int k、T和x); 链和插入件(内部k、常数T和x); 无效输出(ostream&out)常数; 私人: 链节点*第一//指向第一个节点的指针 };

模板类中的好友模板类 我用C++学习数据结构。我将代码复制到我的计算机中,就像书中告诉我的那样,但是编译器显示Chain不是类模板 template <class T> class ChainNode{ friend class Chain<T>; private: T data; ChainNode<T> *link; }; template <class T> class Chain{ public: Chain(){ first = 0; } ~Chain(); bool isEmpty() const { return first == 0;} int Length() const; bool Find(int k, T &x) const; int Search(const T &x) const; Chain<T>& Delete(int k, T &x); Chain<T>& Insert(int k, const T &x); void Output(ostream &out) const; private: ChainNode<T> *first; //指向第一个节点的指针 }; 模板 类链节点{ 朋友类链; 私人: T数据; 链节点*链接; }; 模板 类链{ 公众: Chain(){first=0;} ~Chain(); bool isEmpty()常量{return first==0;} int Length()常量; 布尔查找(整数k、T&x)常数; 整数搜索(常量T&x)常量; 链和删除(int k、T和x); 链和插入件(内部k、常数T和x); 无效输出(ostream&out)常数; 私人: 链节点*第一//指向第一个节点的指针 };,c++,templates,friend,C++,Templates,Friend,编译器报告了一个错误: 如何解决此问题?您需要在朋友声明之前向前声明链,告诉编译器它是一个模板。i、 e // forward declaration template <class T> class Chain; template <class T> class ChainNode { // friend declaration friend class Chain<T>; ... }; // definition te

编译器报告了一个错误:


如何解决此问题?

您需要在朋友声明之前向前声明
,告诉编译器它是一个模板。i、 e

// forward declaration
template <class T>
class Chain;

template <class T>
class ChainNode {

    // friend declaration
    friend class Chain<T>;
    ...
};

// definition    
template <class T>
class Chain {
    ...
};
//转发声明
模板
类链;
模板
类链节点{
//朋友宣言
朋友类链;
...
};
//定义
模板
类链{
...
};

不要发布错误消息的屏幕截图!