我想初始化一些类成员,但我得到了错误
"expected parameter declarator"
(使用clang ++)
使用g ++时"expected identifier before numeric constant".
所以我再次读取类初始化,然后编写代码:
#include <stdio.h>
class AAA{
public:
int l;
AAA(int i){l=i;}
};
class BBB{
bool normal;
AAA aaa=10;
AAA bbb(20);
AAA ccc{30};
AAA ddd={45};
};
int main(int argc, char **argv){printf("hello world\n");return 0;}
似乎不接受语法AAA bbb(20)
!
这是正常的吗? (我使用选项-std = c ++ 11)。
或者我错过了一些观点?
答案 0 :(得分:8)
这很正常。 C ++ 11不允许在非静态数据成员的就地初始化中使用()
括号。这是为了避免潜在的解析作为函数。 可以使用()
perantheses语法:
AAA bbb = AAA(20);
因为无法将此表单解析为函数。