1

テンプレート化されたクラスからクラス定義の構造体を返す関数を作成しようとしています。g++はエラーメッセージを出しますerror: expected constructor, destructor, or type conversion before ‘*’ token。関連するコードは次のとおりです。

BSTDict.cppから:

Node*& BSTDict<T, Compare>::add_helper(Node*& r, T key) { ... }

BSTDict.hppから:

struct Node {
    T key;
    T data;
    Node* left;
    Node* right;
};

...

Node*& add_helper(Node*& r, T key);

私は多くのテストを行いましたが、問題はノードにあると思います(参照とポインターに関係なく)。私もやってみBSTDict<T, Compare>::Node*& BSTDict<T, Compare>::add_helper(Node*& r, T key) { ... }ました。どんな助けでもいただければ幸いです。ありがとう。

編集:ここにBSTDict.hppBSTDict.cppがあります。それらはより大きなプログラムの一部です。

4

1 に答える 1

2
template <typename T, typename Compare>
    typename BSTDict<T, Compare>::Node*& 
    BSTDict<T, Compare>::add_helper(Node*& r, T key) 
    { 
       // ... 
    }

そこに必要かどうかはわかりません/*typename*/。私はあなたのコードをもっと見る必要があるでしょう(私はtemplate<>すでに修飾子msyeflを構成しなければなりませんでした:))

于 2013-03-11T23:55:48.923 に答える