問題描述
如題,最近在學習資料結構在用C++來實現,在實作二元樹的時候遇到如下的問題。
書中的程式碼裡面,二元樹由兩個資料結構組成BinaryTree
和BinartTreeNode
,並且兩個都用到了模板,如下:
template <class T>
class BinaryTreeNode{
friend class BinaryTree<T>;
private:
T data;
BinaryTreeNode<T> *left;
BinaryTreeNode<T> *right;
/*...其他...其他...其他...*/
}
template <class T>
class BinaryTree{
private:
BinaryTreeNode<T> root;
/*...其他...其他...其他...*/
}
但是我在實現的時候遇到如下的錯誤:
範例程式碼:
#template <class T>
class BinaryTreeNode {
friend class BinaryTree<T>; /* 消除该句后可通过编译 */
private:
T info;
BinaryTreeNode<T> left;
BinaryTreeNode<T> right;
};
template <class T>
class BinaryTree {
private:
BinaryTreeNode<T> *root;
};
錯誤:
1>e:\it\c++\binarytree\binarytree\mybianrytree.h(20): error C2989: “BinaryTree”: 類別 範本 已經宣告為非類別 範本
error c2989
截圖:
##環境:
visual studio 2017 + win10(mac 雙系統下的)
麻煩各位了! !
曾经蜡笔没有小新2017-05-16 13:31:03
template <class T> class BinaryTree; // 加一个前置声明
template <class T>
class BinaryTreeNode {
friend class BinaryTree<T>; /* 消除该句后可通过编译 */
private:
T info;
BinaryTreeNode<T> left;
BinaryTreeNode<T> right;
};
template <class T>
class BinaryTree {
private:
BinaryTreeNode<T> *root;
};
ps:segmentfault手機版真的跟屎一樣啊,捏著鼻子用了這麼久,才發現居然不能輸入大於號小於號