C++ 类模板是模板:模板参数无效

2024-03-27

我的类模板有问题。我希望类中的私有数据是某种数字类型的向量的向量,即:

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;
}

如图所示,它编译得很好,但是如果我取消注释 main 中的第二行,则会收到错误(g++ 4.6):

error: template argument 1 is invalid

为什么我会收到此错误?有人有建议的修复方法吗? 谢谢!


#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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 类模板是模板:模板参数无效 的相关文章

随机推荐