我有三个课程:Class A
,Class B
和Class C
。来自Class B
的{{1}}为derived
。 Class A
中声明的protected
纯virtual function
class A
在Class B
中定义。 C类是A类的friend
函数。现在我需要从C类调用virtual function
。当我尝试编译时,我得到的错误为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;
}