Wie wird die ursprüngliche Funktion aufgerufen, nachdem sie in C ++ überschrieben wurde?

7

Ich serialiere die meisten meiner Klassen mit zwei Funktionen, read () und write (). Was ich tun möchte, ist die Lese- / Schreib () - Funktion der Basisklasse, die von den Unterklassen aufgerufen wird, so dass ich den Serialisierungscode nicht mehrmals wiederholen muss.

Zum Beispiel:

%Vor%

In diesem Beispiel möchte ich, dass der Code a, b, c, d von Base liest / schreibt. Sub würde dann Base :: read (QDataStream & amp;) aufrufen und dann alle Attribute hinzufügen, die für Sub eindeutig sind. Auf diese Weise muss ich den Serialisierungscode für jede Unterklasse nicht wiederholen (und möglicherweise auch vergessen).

    
jecjackal 05.07.2011, 19:01
quelle

3 Antworten

17

Sie können Basisklassenfunktionen aufrufen, indem Sie den Funktionsaufruf mit dem Basisklassenbezeichner gefolgt vom Bereichsoperator (::).

voranstellen

So:

%Vor%

EDIT: Hinweis entfernt auf Anfrage.

    
Rycul 05.07.2011, 19:04
quelle
9
%Vor%     
Useless 05.07.2011 19:04
quelle
6

Zunächst einmal - Ihre Memberfunktionen haben keine Rückgabetypen - nicht gültig in C ++, Ihr Compiler könnte sich über das 'default int'-Verhalten beschweren und es passieren lassen, aber Sie sollten ihnen Rückgabetypen geben (Ich werde% co_de verwenden % als Platzhalter).

Sie können den Umfang der übergeordneten Klassenversion auflösen und verwenden, wenn Sie sich in einer Unterklasse befinden:

%Vor%     
wkl 05.07.2011 19:05
quelle

Tags und Links