2012-04-16 14 views
1

okが、そうここに私のヘッダファイル(またはそれの少なくとも一部)です:クラステンプレート、予想コンストラクタ、デストラクタ

template<class T> 

class List 
{ 
public: 
. 
: 
List& operator= (const List& other); 
. 
: 
private: 
. 
: 
}; 

とここに私の.ccファイルである:上

template <class T> 
List& List<T>::operator= (const List& other) 
{ 
    if(this != &other) 
    { 
     List_Node * n = List::copy(other.head_); 
     delete [] head_; 
     head_ = n; 
    } 
    return *this; 
} 

List& List<T>::operator= (const List& other)コンパイルエラー "& 'トークンの前に"予想されるコンストラクタ、デストラクタ、または型変換が発生しました。私はここで間違って何をしていますか?

+0

テンプレートクラス定義は、ヘッダーファイル内にある必要があります。説明のためにこの質問を見てください:http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file –

答えて

3

戻り値の型List&はテンプレート引数なしでは使用できません。それはList<T>&である必要があります。

template <class T> 
List<T>& List<T>::operator= (const List& other) 
{ 
    ... 
} 


しかし、あなたは、この構文エラーを修正した後でも、テンプレート関数の定義はヘッダファイルに配置する必要があるため、あなたはリンカの問題を抱えているだろうことに注意してください。詳細については、Why can templates only be implemented in the header file?を参照してください。

関連する問題