C++ Classes and Xcode

C++ Classes and Xcode

本文关键字:Xcode and Classes C++      更新时间:2023-10-16

我不明白为什么Xcode在第3行给我"预期参数声明符"错误。你能解释一下后面发生了什么吗?

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

A的构造函数中初始化b,并具有构造函数public:

class A;
class B {
public:
    B(A* a) { }
};
class A {
public:
    A() : b(this) {}
    B b;
};
int main()
{
    A a;
}

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

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

class A;
class B {
  public:
    B(A* a) { }
};
class A {
    B b = B(this);
    // or
    B b{this};
};