1

私は現在宿題をしようとしていて、最初に自分のものをコンパイルしようとしています (.h ファイルのクラスヘッダーと .inl ファイルの空の定義 (私は typename テンプレートを使用しています) )。

私はこのエラーが発生しています:

error: expected constructor, destructor, or type conversion before ‘*’ token

これが私の .h ファイルです: http://ideone.com/dm3Bp

これが私の .inl ファイルです: http://ideone.com/5FBep

.inl ファイルの最後にノード (これらのファイルでは Noeud と呼ばれます) を作成しようとしています。どうやら、E型データの配列から値を取得することはできません...

エラーはメソッドの定義の直前にあります:

Noeud * Arbre<E>::_auxPereSym(E *tabS, int debut, int fin, E **ptr, int &card) throw (std::bad_alloc)

戻り値の型は Arbre< E >::Noeud にする必要があることを他のスレッドで読みました Noeud は私のクラス Arbre のネストされた構造であるため...しかし、残念ながら、ヘッダーファイルを変更することはできません...

何かご意見は?

お時間とご協力ありがとうございます。

注: 翻訳が必要な場合はお知らせください。これはフランス語の宿題です。

4

1 に答える 1

3

.inl ファイルで定義するときに、そのように修飾するようにしてください (問題のヘッダー ファイルではありません)。

戻り値の型は、適切なスコープで適切に検索する必要があります。

脳が先にコンパイルしたコード

template<typename E>
typename Arbre<E>::Noeud * Arbre<E>::_auxPereSym(E *tabS, int debut, int fin, E **ptr, int &card) throw (std::bad_alloc)

EDIT2:

メンバー関数の return ステートメントを次のように変更します。

return new typename Arbre<E>::Noeud(tabS[0]);
于 2010-11-17T02:35:05.607 に答える