2012-05-05 9 views
1

テンプレートとメソッドに関するいくつかのトピックを見つけました。しかし私はそれが私のシナリオでどのように適用されるのか理解できません。C++ - テンプレートタイプを返すメソッドを持つテンプレートクラス

template <class T> 
class SimpleLinkedList {} 

のは、これが私のテンプレートクラッセであり、それは方法含まれているとしましょう:

LinkedNode<T> * next(){}; 

LinkedNodeもテンプレートであるとSimpleLinkedListテンプレートからクラスTを使用しています。

スローされるエラーは次のとおりです。

Member reference base type "LinkedNode<T>" is not a struct or union. 

は今、私は構造体または共用体が何であるかを知っているが、私の方法が間違っている理由を私は理解することはできません。

編集

エラーは全く違うものであるように思われました。 NVM。

ありがとうございました。

+2

情報が不十分です。 'LinkedNode 'タイプの定義は何ですか? –

+1

あなたは何を求めているのかわかりません...詳しく教えてください。 – Sidar

+0

あなたはより多くの情報を提供することができます –

答えて

1

おそらくLinkedNodeをテンプレートとして使用しないとSimpleLinkedListと定義しました。 LinkedNode<T> * next(){}<T>を削除してみてください。これは機能しますか?より多くの情報が必要です。

+0

テンプレート引数が必要です。動作しません。 – Sidar

+0

完全な 'LinkedNode'と' SimpleLinkedList'を表示 – demi

+0

私はそれが正直にどのように役立つかは本当に分かりません。テンプレートリターンがどのように機能すべきかに関するいくつかの約束があるべきですか? – Sidar

0

SimpleLinkedList<T>::next()の定義では、逆参照するときにポインタの意味を使用する必要があります。 currentはポインタであり、参照ではありません。

LinkedNode<T> * next(){ 
    if (getSize() == 0 || current.next == NULL) return NULL; 
     return current; 
}; 

に変更:previousため同様に

LinkedNode<T> * next(){ 
    if (getSize() == 0 || current->next == NULL) return NULL; 
     return current; 
}; 

+0

はい、私はそれを逃した。デミはそれを指摘した。しかし私は完全に私のせいではないでしょう= P CLANG自動補完は私にも失敗しました(コードライトを使って)。 回答ありがとうございます。 – Sidar

関連する問題