我碰巧写了这样的代码:
class a
{
public:
a() {}
};
int main()
{
a *a = new a; // line 10
a a; // line 11
return 0;
}
g++ 错误:
2.c: In function ‘int main()’:
2.c:10:16: error: expected type-specifier before ‘a’
2.c:10:16: error: cannot convert ‘int*’ to ‘a*’ in initialization
2.c:10:16: error: expected ‘,’ or ‘;’ before ‘a’
2.c:11:7: error: expected ‘;’ before ‘a’
我发现,如果我在第 10 行将“a *a”更改为“a *b”,那么 g++ 很高兴,这里是好的代码:
class a
{
public:
a() {}
};
int main()
{
a *b = new a;
a a;
return 0;
}
我很困惑,不确定为什么原始代码无法编译以及“修复”如何工作。
任何的想法?