-1

我收到错误:

预期的 ';' 在 '(' 标记之前。

为什么会这样?我该如何解决?

#include <iostream>

class AB {
int n;
AB(int x) { n = x;}
};


class ED {

AB blee(1);
};
4

3 回答 3

3

这很可能被解析错误并失败:

AB blee(1);

如果您尝试初始化 type 的数据成员AB,则不能那样做。在 C++11 中,您可以这样做:

AB blee{1};

或者

AB blee = 1;

或者,您可以在ED的构造函数中执行此操作。这适用于 C++11 和 C++03。

class ED {
  ED() : blee(1) {}
  AB blee;
};
于 2013-02-18T23:25:35.833 回答
3

您必须由构造函数通过member-initialization进行实例化:

class ED {
    ED() : blee(1) {}

    AB blee;
};
于 2013-02-18T23:26:35.880 回答
1

你想用你的 做AB blee(1);什么?它既不是函数声明也不是函数调用。

要调用一个函数,你可以把它放在 的某个成员的主体中ED,然后去掉AB,只剩下blee(1);

要声明一个函数,您需要int在括号内放置一个类型(例如,):AB blee(int);

于 2013-02-18T23:25:44.683 回答