Aufruf von "weiter oben" geerbten Methoden
-
Hallo,
Beispiel:
class myString : public std::string { public: myString(); myString(const char * Cstr); }; class foo : public myString { void bar() { myString::clear(); // <<<<<<<<<<<<<<<<<<<<<<<<<<< // wieso funzt das? Es müsste doch "std::string::clear()" heissen } }Frage:
ist es erlaubt, die Methode std::string::clear() wie
im Beispiel dargestellt aufzurufen (also über den Umweg myString, ohne
dass myString aber eine Methode "clear()" bereitstellt)?Compilieren tut's ohne Fehler/Warnung etc. und laufen lernt das Baby auch ohne
auf Maul zu fallen.Ohne die Angabe "myString::" wär's ja in Ordnung, dass es funktioniert,
schließlich hat foo indirekt von std::string geerbt.
Aber wenn die Klasse explizit mit angegeben wird, wo sich die Funktion befinden
soll, dann schaut's irgendwie verdächtig aus.thx
Martin
-
Klar ist das legal
myString "ist ein" std::string.
Kurt
-
ok, dann werd ich jetzt derartige Aufrufe schamlos verwenden,
auch wenn sich dann zum Schluss keiner mehr im Code auskennt
gute n8
Martin