Mam problem z szablonem klasy. Chcę danych prywatnych w klasie jako wektor wektorów jakiegoś typu liczbowego, tj:Szablon klasy C++ jest szablonem: argument szablonu jest nieprawidłowy
std::vector<std::vector<double> >
std::vector<std::vector<std::complex<double> > >
Ale chcę typ wektora (używam biblioteki wektorów osób trzecich wraz z wektory stl) i typ elementu, który ma być szablonem. Próbowałem szablonów szablonów, ale teraz nie sądzę, że jest to rozwiązanie mojego problemu. A jest bardzo uproszczony przykład to:
#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;
}
Jak pokazano kompiluje grzywny, ale jeśli odkomentowaniu drugą linię główną, pojawia się błąd (g ++ 4.6):
error: template argument 1 is invalid
Dlaczego mam to błąd? Czy ktoś ma sugerowaną poprawkę? Dzięki!
Policz symbole '<' s i '> w linii, która nie działa. Brakuje jednego ... –
To jest naprawdę kiepski komunikat o błędzie, całkowicie mylący. –
@PeteBecker: Wstyd. Przygotowywałem się do wykopania mojego [szablonu rebinder] (http://stackoverflow.com/a/11723847/596781). –