我遇到的情况类似于将类成员函数指定为另一个类的朋友?.
但是在我的情况下,B 类需要知道 A 类,因为它正在使用它,所以该线程中给出的解决方案对我不起作用。我还尝试对函数本身进行前向声明,但效果不佳。似乎每个类都需要其他类的完整定义......
有什么简单的方法可以解决吗?我更喜欢不涉及包装旧类之一的新类的解决方案。
代码示例:
//A.h
class B; //not helping
void B::fB(); //not helping
class A
{
public:
friend void B::fB();
void fA(){};
protected:
void fA_protected(){};
};
//B.h
#include "A.h"
class B
{
private:
A a;
public:
void fB(){ a.fA_protected();} // this function should call the protected function
void fB2(){ a.fA(); }
};
感谢帮助者!
(顺便说一下这是我的第一个问题,我希望我能清楚地解释自己)