C ++类和Xcode

时间:2015-07-03 22:02:30

标签: c++ class pointers

我不明白为什么Xcode在第3行给出了“Expected parameter declarator”错误。 你能解释一下我背后会发生什么吗?

class B;
class A {
    B b(this);
};

class B {
    B(A* a) { }
};

2 个答案:

答案 0 :(得分:1)

错误的原因是类内成员初始化需要使用={},而不是(),尽管我同意“预期参数声明”和“预期')'“不是特别有用的错误信息。

此外,在您声明使用b的构造函数初始化B时,编译器还不知道该构造函数。在B之前移动A的定义来解决此问题:

class A;

class B {
  public:
    B(A* a) { }
};

class A {
    B b = B(this);
    // or
    B b{this};
};

答案 1 :(得分:1)

b的构造函数中初始化A并拥有构造函数public

class A;

class B {
public:
    B(A* a) { }
};

class A {
public:
    A() : b(this) {}
    B b;
};

int main()
{
    A a;
}