这是我的代码和要求:
我有 2 个 A 和 B 类,它们没有任何继承。我用A类的一种方法调用B类的一种方法,那么B类的方法应该回调A类的方法之一来执行回调。
部分代码:
类A.h:
#include "classB.h"
class classA
{
public:
classA();
classB *pClassB;
void callClassB();
void callBack();
};
类A.cpp:
#include "classA.h"
classA::classA()
{
pClassB = new classB();
}
void classA::callBack()
{
return;
}
void classA::callClassB()
{
pClassB->callFunction();
}
类B.h:
class classB
{
public:
classB();
void callFunction();
}
B类.cpp:
#include "classB.h"
classB::classB()
{
}
void classB::callFunction()
{
// I should call classA's callback here!
}
问题是,我不能在 classB.h 中包含 classA.h,因为它会在其他地方导致一些编译问题(我无法解决)。我不能将 classB 作为 classA 的子类(如果可以,我只需要这样做classA::callBack()
)。那么有没有办法解决这种情况呢?
更新:这就是我修改的内容:
class classB
{
public:
classB(classA& pCallBack);
void callFunction();
void (classA::*m_callback)(void);
};
classA::classA()
{
pClassB = new classB(*this);
}
classB::classB(classA& pCallBack)
{
m_callback = pCallBack;
}
我试图保存指针,但也失败了。它说“从不兼容的类型分配”......它有什么问题?