2012-09-07 27 views
11

クラステンプレートに問題があります。 (私は一緒にサードパーティのベクターのライブラリーを使用していC++クラステンプレートがテンプレートです:テンプレート引数が無効です

std::vector<std::vector<double> > 
std::vector<std::vector<std::complex<double> > > 

しかし、私は、ベクターの種類をしたい:私はクラスのプライベートデータが数値型のいくつかの種類のベクトルのベクトルになりたい、すなわちstlベクトル)、およびテンプレート化される要素の型。テンプレートテンプレートを試しましたが、今はそれが私の問題の解決策ではないと思います。非常に簡単な例である:

#include <complex> 
#include <vector> 
template<typename T> 
class Fred { 
    std::vector<T> data_; 
}; 
int main(){ 
    Fred<std::vector<double> > works; 
    //Fred<std::vector<std::complex<double> > doesnt_work; 
    return 0; 
} 

それは罰金コンパイル、私はメインの2行目のコメントを解除した場合、私はエラー(G ++ 4.6)を得る示すとおり

error: template argument 1 is invalid 

私はこれを取得なぜエラー?誰にも修正案がありますか? ありがとう!

+20

動作しない行の '<'と '>'を数えます。 1つが失われています... –

+3

これは完全に誤解を招く、実際には貧弱なエラーメッセージです。 –

+0

@PeteBecker:恥。私は私の[テンプレートリバーダー](http://stackoverflow.com/a/11723847/596781)を掘り起こす準備をしていました。 –

答えて

16
#include <complex> 
#include <vector> 
template<typename T> 
class Fred { 
    std::vector<T> data_; 
}; 

int main(){ 
    //Fred<std::vector<double> > works; 
    Fred<std::vector<std::complex<double> > > doesnt_work; 
    return 0; 
} 

よく機能します。第3の>が、doesnt_workと宣言されています。

+3

ありがとう!今私は本当に馬鹿だと感じる! – jtravs

関連する問題