我对 C++ 术语很陌生,所以希望我的标题不会太离谱。但我 100% 确定有人会告诉我 ;)
我有这段代码:
struct B {
struct A {
A() : a(0) { }
A(int a) { this->a = a; }
int a;
}
a0, // OK
a1(1); // NOT OK!
B() : b(0) { }
B(int b) { this->b = b; }
int b;
}
b0, // OK
b1(1); // OK
但是 gcc 无法编译并生成以下输出:
8:8: error: expected identifier before numeric constant
8:8: error: expected ‘,’ or ‘...’ before numeric constant
2:3: error: new types may not be defined in a return type
2:3: note: (perhaps a semicolon is missing after the definition of ‘B::A’)
如果我删除 'a1(1)' 对象或将其更改为 'a1' 然后它编译没有问题。但是我不能使用'A(int a)'构造函数。类似的?对象“b1”的构造函数没有问题。对此有何解释?谢谢 :)