2012-09-07 217 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; 
} 

如圖所示它編譯細,但如果我去掉在主第二行中,我得到的錯誤(克++ 4.6):

error: template argument 1 is invalid 

爲什麼我得到這個錯誤?有沒有人有建議修復? 謝謝!

+20

計算不能工作的行中的<'s。有一個失蹤... –

+3

這是一個非常糟糕的錯誤消息,完全誤導。 –

+0

@PeteBecker:羞愧。我正在準備挖掘我的[模板rebinder](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; 
} 

工作的很好。您在doesnt_work的聲明中錯過了第三個>

+3

謝謝!現在我覺得很蠢! – jtravs