1

このファイルのエラーは何ですか? 私は得る:

foo2.cpp:9: エラー: '(' トークンの前にプライマリ式が必要です
foo2.cpp:9: エラー: 'int' の前にプライマリ式が必要です
foo2.cpp:9: エラー: 予期される ';' '{' トークンの前
int main(void)
{
  class X {
    int i;
  public:
    X(int ii = 0);
  };

  X::X(int ii) { i = ii; }
  return 0;
}
4

2 に答える 2

7

最初に、なぜですか?

第 2 に、メソッド (を含む) 内で実装を提供することはできませんmain。これを行う必要がある場合は、実装をインラインに保ちます。

int main()
{
  class X {
    int i;
  public:
    X(int ii = 0){ i = ii; }
  };
  return 0;
}
于 2012-06-05T13:33:53.523 に答える
1

C++ では関数をネストできません。プログラムを変更するには、2 つの方法があります。クラス定義を の外に移動するmainか、メソッド定義をクラス内に置くことができます。

最初の選択肢:

class X {
  int i;
public:
  X(int ii = 0);
};

X::X(int ii) { i = ii; }

int main(void)
{
  return 0;
}

2 番目の選択肢:

int main(void)
{
  class X {
    int i;
  public:
    X(int ii = 0) { i = ii; }
  };

  return 0;
}
于 2012-06-05T13:46:05.680 に答える