Zum Beipiel der Viewer von Übung 10 und 11 ist als Klasse definiert, welche den SoXtWalkViewer von Inventor erbt, und noch zusätzliche Felder und Methoden hat.
In der Definition der Klasse kommt nach dem neuen Namen ein ":" und dann eine oder mehrere Klassen von denen geerbt werden soll.
Klassen können als public oder protected geerbt werden. Public heisst, dass auf ihre Felder und Methoden wie in der Klasse definiert zugegriffen werden kann, protected hingegen, dass auf public Felder und Methoden dieser Klasse von aussen nicht zugegriffen werden kann.
class MyViewer : public SoXtWalkViewer { public: MyViewer(Widget parent = NULL); ~MyViewer(); protected: void deSelector(); static SbBool processEvent(void *, XAnyEvent *); static int mode; static int MouseX, MouseY; MyBitmapButton *buttonList[10]; virtual void createViewerButtons(Widget parent); static void myLeftButtonCB(Widget, int, XmAnyCallbackStruct *); void movPushCB(); void rotPushCB(); void chairPushCB(); void threePushCB(); void studentPushCB(); };Constructor und Destructor können nicht vererbt werden. Sie können aber so definiert werden, dass sie den Constructor/Destructor der Superklasse aufrufen.
In diesem Beispiel ruft der Constructor von MyViewer den Constructor von SoXtWalkViewer auf und anschliessend noch zwei weitere Funktionen.
MyViewer::MyViewer(Widget parent) : SoXtWalkViewer(parent) { this->setEventCallback(processEvent, this); createViewerButtons(parent); }
This website has been archived and is no longer maintained.