如何使用彼此的类

时间:2016-11-10 20:48:03

标签: c++ class pointers circular-dependency incomplete-type

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);
    ^~

但我真的需要这些类通过指针互相使用。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

将实际使用其他类型的函数定义移到下面,两种类型都完整。

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);
}
相关问题