我有三个类Class A:Class B和Class C。Class B是derived从Class A。一个protected纯virtual function声明 inclass A定义在Class B. C 类是 A 类的一个friend函数。现在我需要virtual function从 C 类调用它。当我尝试编译时,我得到的错误为cannot access protected member declared in class A.
不可能吗?
编辑:添加代码:
//A.h
class A
{
friend class C;
protected:
virtual int SetPtr(unsigned long long Offset)=0;
};
//B.h
class B: public A
{
protected:
int SetPtr(unsigned long long Offset) override;//function defined in B.cpp
};
//C.h
class C
{
public:
C(A& aObj);
int CallMyFun();
private:
A& obj;
};
//C.cpp:
C::C(A& aObj) :obj(aObj)
{
}
int C::CallMyFun()
{
obj.SetPtr(1);
return 0;
}