关于c ++:foo2.cpp:9:错误:在’(’标记之前的预期的primary-expression


foo2.cpp:9: error: expected primary-expression before '(' token

这个文件中的错误是什么?我得到:

1
2
3
foo2.cpp:9: error: expected primary-expression before '(' token
foo2.cpp:9: error: expected primary-expression before 'int'
foo2.cpp:9: error: expected ';' before '{' token
1
2
3
4
5
6
7
8
9
10
11
int main(void)
{
  class X {
    int i;
  public:
    X(int ii = 0);
  };

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


首先,我可以问一下,为什么?

第二,不能在方法(包括main)内提供实现。如果必须这样做,请将实现保持在内联状态:

1
2
3
4
5
6
7
8
9
int main()
{
  class X {
    int i;
  public:
    X(int ii = 0){ i = ii; }
  };
  return 0;
}


不能在C++中嵌套函数。要修改程序,您有两种选择。您可以将类定义移到main之外,也可以将方法定义放在类中:

第一选择:

1
2
3
4
5
6
7
8
9
10
11
12
class X {
  int i;
public:
  X(int ii = 0);
};

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

int main(void)
{
  return 0;
}

第二种选择:

1
2
3
4
5
6
7
8
9
10
int main(void)
{
  class X {
    int i;
  public:
    X(int ii = 0) { i = ii; }
  };

  return 0;
}