Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

HowTo: Super

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.

doc/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.
functionname is the name of the super-function.
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();
    ...
}
Last modified 7 years ago Last modified on Apr 12, 2017, 11:48:32 PM