Because of my device I can't use virtual functions. Suppose I have:
class Base
{
void doSomething() { }
};
class Derived : public Base
{
void doSomething() { }
};
// in any place
{
Base *obj = new Derived;
obj->doSomething();
}
the obj->doSomething()
will call just the Base::doSomething()
Is there a way with Base *obj
, to call the doSomething
of the Derived
?
I know I can just put a virtual
before doSomething()
of Base
it solve the problem, but I'm limited by my device, the compiler doesn't support it.
You could down cast the base class pointer to the derived class and call the function.
Base* obj = new Derived;
Derived* d = static_cast<Derived*>( obj );
d->doSomething();
Since doSomething()
is not declared virtual
, you should get the derived implementation.