我有三个类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;
}