私はプログラムの作成に取り組んでおり、その一部ではノードの構造を含む 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
愚かな質問をお詫びします。このコードは私の教科書の一部のコードと非常によく似ており、コピーするだけでこのエラーが発生します。