我正在制作一个程序,其中一部分需要使用 BST 模板,包括节点的结构。当我尝试在 g++ 中编译代码时,出现编译错误(以及其他一些似乎是由相同问题引起的。下面是导致问题的代码部分。
#include <iostream>
template <typename Comparable> class BinarySearchTree {
public:
BinarySearchTree();
BinarySearchTree( const BinarySearchTree &rhs);
~BinarySearchTree();
const Comparable & findMax() const;
void insert( const Comparable &x);
const BinarySearchTree & operator=(const BinarySearchTree &rhs);
/* ..a bunch of other binary search tree related functions... */
private:
struct BinaryNode {
Comparable element;/* why is this line causing problems? */
BinaryNode *left;
BinaryNode *right;
BinaryNode(const Comparable &theElement, BinaryNode *lt, BinaryNode *rt);
: element(theElement), left(lt), right(rt){}
};
/* ... some more functions ... */
};
int main() {
return 0;
}
用 g++ 编译它会导致以下错误消息:
Line 16:invalid use of non-static data member BinarySearchTree<Comparable>::BinaryNode::element
为愚蠢的问题道歉。这段代码与我教科书中的一些代码非常相似,复制它只会产生这个错误。