让c ++对象相互通信而不包含循环包含

时间:2017-02-06 19:14:46

标签: c++ oop c++03

我正在努力实现一件事。我的要求是C ++ 03,没有外部库。

我有两个不同类的对象,我希望它们能够进行通信。我的第一次尝试让每个类都持有指向另一个的指针,并在满足某些条件时使用指针调用成员函数

class A;
class B;

class A
{
public:
    void foo();
    void notify();
    B* partner;
};

class B
{
public:
    void bar();
    void notify();
    A* partner; 
}

void A::foo()
{
    partner->notify();
}

void B::bar()
{
    partner->notify();
}

对我来说问题是在我的实际例子中,A和B在不同的源文件中,现在A.h包括B.h,反之亦然。我的想法是我不能只省略包含并进行类的前向声明,因为A不仅需要了解B,还需要了解B的成员函数。

这是一种干净且简单的方法吗?

编辑:在链接的问题中,这两个类没有调用彼此的成员函数,因此这些类的前向声明就足够了。我希望能够调用彼此的成员函数(或者有人建议在两个对象之间传递信息的不同方式)

0 个答案:

没有答案