我的班级模板有问题。
template <class T>
class test {
private:
T a;
public:
test (T _a){
a = _a;
}
test (){}
};
template <class T>
class test2 {
public:
test<double> first(10.2);
// ^ error C2059: syntax error : 'constant'
test<T> second;
test<T> third;
test2(){}
};
main()
{
test2<int> object;
return 0;
}
为什么我会收到上面评论中显示的编译器错误?
答案 0 :(得分:3)
非静态数据成员初始值设定项需要使用大括号或等号。括号不是一个选项,可能是因为数据成员不会发生整个Most Vexing Parse惨败。将其更改为以下之一:
test<double> first = 10.2; //option 1 (doesn't work with explicit constructor)
test<double> first{10.2}; //option 2
答案 1 :(得分:0)
test<double> first(10.2);
这是语法错误。
它看起来像是一个带有常量值的函数声明来代替参数类型(非法),或者是一个用非法语法初始化的成员变量的声明。