I have a base class and a derived one and I want to change base functions while keeping them static as they should be passed to other functions as static.
How can I do that?
I have a base class and a derived one and I want to change base functions while keeping them static as they should be passed to other functions as static.
How can I do that?
You cannot have static virtual functions, because it doesn't make sense to have them.
static function can not be virtual since they do not have an instance through which they are accessed. I do believe you can overwrite them though.
If i am correct in understanding ur question, then u can follow the following approach otherwise ignore..
have static function pointer in the base class.
in base class have a static function ( in which u call the function by using that static function pointer)..
in derived classes set that static function poiter to the function defination u wish to execute.. ( in base class u can set the function pointer to some default function).
You can't have static virtual functions in C++.
The ATL framework gets around the limitation of no virtual statics by making the base class be a template, and then having derived classes pass their class type as a template parameter. The base class can then call derived class statics when needed, eg:
This is known as Curiously recurring template pattern, which can be used to implement static polymorphism.
Virtual functions typically rely on
this
pointer to determine the type of function to be called at run time.A static member function does not pass a
this
so static virtual functions are not allowed in C++.