如何让类互相使用
How to make classes using each other
class A;
class B;
class A
{
public:
A(B * b) : b(b)
{
b->foo(this);
}
private:
B * b;
};
class B
{
public:
void foo(A *)
{}
};
编译这段代码给了我
incomplete-type.hpp: In constructor ‘A::A(B*)’:
incomplete-type.hpp:9:4: error: invalid use of incomplete type ‘class B’
b->foo(this);
^~
但我确实需要 类 通过指针相互使用。我该怎么做?
将实际使用其他类型的函数定义移至下方,两种类型均已完成。
class A;
class B;
class A
{
public:
A(B * b);
private:
B * b;
};
class B
{
public:
void foo(A *)
{}
};
inline A::A(B * b) : b(b)
{
b->foo(this);
}
class A;
class B;
class A
{
public:
A(B * b) : b(b)
{
b->foo(this);
}
private:
B * b;
};
class B
{
public:
void foo(A *)
{}
};
编译这段代码给了我
incomplete-type.hpp: In constructor ‘A::A(B*)’:
incomplete-type.hpp:9:4: error: invalid use of incomplete type ‘class B’
b->foo(this);
^~
但我确实需要 类 通过指针相互使用。我该怎么做?
将实际使用其他类型的函数定义移至下方,两种类型均已完成。
class A;
class B;
class A
{
public:
A(B * b);
private:
B * b;
};
class B
{
public:
void foo(A *)
{}
};
inline A::A(B * b) : b(b)
{
b->foo(this);
}