I have a program where I need to make a base class which is shared between a dll and some application code. Then I have two different derived classes, one in the dll one in the
Access specifier applies to the Derived
class handle (reference/pointer/object) and not the methods of Derived
class itself. Even if the method was not static
, you would have ended up with the same error. Because you are not accessing var
with the derived handle. Demo.
The correct way is to provide a setter
method:
class Base {
protected:
int var ;
public:
void setVar(const int v) { var = v; } // <--- add this method
};
Note: There is one more way out, but I am not sure if it's elegant.
(static_cast(pBase))->var = 2;