I have a problem with a class template. I want the private data in a class to be a vector of vectors of some kind of numeric type, ie:
std::vector<std::vector<double> >
std::vector<std::vector<std::complex<double> > >
But I want the type of vector (I'm using a library of third party vectors along with stl vectors), and the element type to be templated. I tried template templates but now I don't think that is the solution to my problem. A highly simplified example is:
#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;
}
As shown it compiles fine, but if I uncomment the second line in main, I get the error (g++ 4.6):
error: template argument 1 is invalid
Why do I get this error? And does anyone have a suggested fix? Thanks!
#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;
}
Works well. You miss third >
in declaration of doesnt_work
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.