假设我有以下代码:
class A
{
public:
A(int Val)
{
_val = Val;
}
virtual ~A() = default;
private:
int _val = 0;
};
class B
{
public:
B() = default;
virtual ~B() = default;
private:
A _a(3); // Error: expected identifier before numeric constant
};
int main()
{
B b;
return 0;
}
当我尝试直接初始化“ A _a(3);”时我将从编译器中收到以下错误: “数值常量前的预期标识符” 怎么了?
非常感谢
答案 0 :(得分:4)
您可以使用class node
{
public:
string data;
node *left = nullptr;
node *right = nullptr;
};
语法:
{}
或使用class B
{
public:
B() = default;
virtual ~B() = default;
private:
A _a{ 3 };
};
:
=
不允许使用括号来避免烦人的解析。
答案 1 :(得分:1)
A _a(3);
C ++编译器将以上行解释为函数_a(),该函数返回类型A。
如@ Jarod42 A _a{3};
所指出的那样。