0

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;
}
Jackzz
  • 1,417
  • 4
  • 24
  • 53

0 Answers0