私はたまたま次のようなコードを書きます:
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;
}
元のコードがコンパイルされない理由と「修正」がどのように機能するかがわかりません。
何か案が?