我正在努力实现一件事。我的要求是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的成员函数。
这是一种干净且简单的方法吗?
编辑:在链接的问题中,这两个类没有调用彼此的成员函数,因此这些类的前向声明就足够了。我希望能够调用彼此的成员函数(或者有人建议在两个对象之间传递信息的不同方式)