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 に答える