我不明白为什么Xcode在第3行给出了“Expected parameter declarator”错误。 你能解释一下我背后会发生什么吗?
class B;
class A {
B b(this);
};
class B {
B(A* a) { }
};
答案 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;
}