1

我正在制作一个程序,其中一部分需要使用 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

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

4

1 回答 1

10
BinaryNode(const Comparable &theElement, BinaryNode *lt, BinaryNode *rt); //<-- This..
             : element(theElement), left(lt), right(rt){}

有一个分号..删除它,它会工作得很好。

于 2013-11-12T00:06:57.557 回答