私は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」は、そのコンストラクターに問題はありません。これの説明は何ですか?ありがとう :)