Class A
、Class B
およびの 3 つのクラスがありClass C
ます。からClass B
です。で宣言されたピュアは で定義されています。クラス C はクラス A の関数です。クラス C からそれを呼び出す必要があります。コンパイルしようとすると、エラーが発生します。derived
Class A
protected
virtual function
class A
Class B
friend
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;
}