テンプレート化された二分木をコピーする関数を書いています。これまでのところ、私はこれを持っています:
template <typename Item, typename Key>
Node* BSTree<Item,Key>::copy(Node* root) {
if(root == NULL) return NULL;
Node* left;
Node* right;
Node* to_return;
left = copy(root->left());
right = copy(root->right());
to_return = new Node(root->data());
to_return->left() = left;
to_return->right() = right;
return to_return;
}
しかし、プログラムをコンパイルしようとすると、解決方法がわからないエラーが複数発生します。それらはすべて、テンプレート宣言の直後の行にあります。
1)エラーC2143:構文エラー:';'がありません 前'*'
2)エラーC4430:型指定子がありません-intと見なされます
3)エラーC2065:'アイテム':宣言されていない識別子
4)エラーC2065:'キー':宣言されていない識別子
プログラム内の他のすべての関数は正しくコンパイルされ、テンプレートに問題がないため、なぜこれが実行されるのかよくわかりません。それはすでにヘッダーファイルで宣言されており、間違いなくリターンタイプが割り当てられているので、私は困惑しています。