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


Anmelden zum Antworten