= HowTo: Super = [[TracNav(TracNav/TOC_Development)]] == Description == SUPER is a macro defined in {{{core/Super.h}}}. It's capable to call a function in the parent class of another class. This avoids class-hierarchy-dependend code like {{{MyParentClass::function();}}}. Instead we use {{{SUPER(MyClass, function);}}}. As you can see, the super-call depends only on the current class. If the parent changes, we don't have to modify the code. '''Important''': A super-function must be virtual and public. If you don't declare the function {{{public}}} you'll get a compiler error complaining about the private nature of the function. [wiki:Super] explains in detail how to add a new super-function. == Usage == This is how you call the SUPER macro: * '''SUPER('''''MyClass, functionname, arguments...''''')'''; ''MyClass'' is the name of the class implementing this function.[[br]] ''functionname'' is the name of the super-function.[[br]] ''arguments'': The arguments passed to the function. If the function takes no arguments, SUPER gets called with only 2 parameters (''MyClass'' and ''functionname''). == Example == This is an example how to use SUPER: *.h file: {{{ #include "core/BaseObject.h" class MyClass : public BaseObject { public: virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); }; }}} *.cc file: {{{ void MyClass::XMLPort(Element& xmlelement, XMLPort::Mode mode) { SUPER(MyClass, XMLPort, xmlelement, mode); doSomething(); ... } }}}