为什么以下代码不起作用?我得到错误C2059'恒定'。使用Visual C ++ 2008。
class C {
public:
C(int arg) {}
};
class B {
public:
C c(1); //error C2059
B() {}
};
我无法定义默认构造函数。另外,我无法声明一个指向C的指针,然后在B的构造函数中“将其新建”。
C c()
被解释为函数声明,而int文字1
本身会使语法无效。考虑改用大括号(C ++ 11)或直接初始化:
C c{1};
或者:
B() : c(1) {}
第8.5节
11一个其初始化程序是一组空括号(即)的对象
()
,应进行值初始化。[注意:由于初始化器
()
的语法不允许,
X a();
不是类的对象
X
的声明,而是不带任何参数并返回X的函数的声明。()
在某些其他初始化上下文(5.3.4、5.2.3、12.6.2)中允许使用该形式。—尾注]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句