I have three classes: Class A
, Class B
and Class C
. Class B
is derived
from Class A
. A protected
pure virtual function
declared in class A
is defined in Class B
. Class C is a friend
function of Class A. Now I need to call that virtual function
from class C. When I try to compile, I get the error as cannot access protected member declared in class A
.
Isn't it possible?
Edit: Code added:
//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;
}