C++ C++;类模板和嵌套结构&引用;非静态数据成员的使用无效…”;

C++ C++;类模板和嵌套结构&引用;非静态数据成员的使用无效…”;,c++,C++,我正在制作一个程序,其中一部分需要使用BST模板,包括节点的结构。当我尝试用g++编译代码时,我得到了一个编译错误(还有一些其他错误似乎是由相同的问题引起的)。 下面是导致问题的代码部分 #include <iostream> template <typename Comparable> class BinarySearchTree { public: BinarySearchTree(); BinarySearchTree(

我正在制作一个程序,其中一部分需要使用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;
}
#包括
模板类二进制搜索树{
公众:
二进制搜索树();
二进制搜索树(const-BinarySearchTree&rhs);
~BinarySearchTree();
可比常数&findMax()常数;
无效插入(常数和x);
const-BinarySearchTree&operator=(const-BinarySearchTree&rhs);
/*…一堆其他与二叉搜索树相关的函数*/
私人:
结构二进制节点{
可比元素;/*为什么这条线会导致问题*/
二进制节点*左;
二进制节点*对;
BinaryNode(常量可比&元素,BinaryNode*lt,BinaryNode*rt);
:元素(theElement)、左(lt)、右(rt){
};
/*…更多功能*/
};
int main(){
返回0;
}
使用g++编译此文件会导致以下错误消息:

Line 16:invalid use of non-static data member BinarySearchTree<Comparable>::BinaryNode::element
第16行:非静态数据成员BinarySearchTree::BinaryNode::element的使用无效

为这个愚蠢的问题道歉。此代码与我教科书中的某些代码非常相似,复制它只会产生此错误。

BinaryNode(const Comparable&theElement,BinaryNode*lt,BinaryNode*rt);/
BinaryNode(const Comparable&theElement,BinaryNode*lt,BinaryNode*rt);//gahh,所有事物的分号。第一个编译错误出现在上面几行的事实使我不能往下看。gahh,所有事物的分号。第一个编译错误出现在上面几行的事实使我不能往下看。
BinaryNode(const Comparable &theElement, BinaryNode *lt, BinaryNode *rt); //<-- This..
             : element(theElement), left(lt), right(rt){}