Von Template-Klassen ableiten



  • Hallo,

    wenn man von Template-Klassen ableitet, so muss man seine protected und public Member mit entweder mit this oder dem Basisklassennamen prefixen, weils sonst nicht kompiliert.

    Warum haben die den Standard nicht so entworfen, dass das ohne explizite Spezifizierung möglich ist?

    Ich finde, dass das eine beschissene Sackgasse von C++ ist. Bei langen namen mach ich einfach ein using base_type oder so draus.

    Gibt es eigentlich einen Grund dafür, dass das so ist? Wohl nicht implementierbar oder wat..



  • Wenn man ne Template-Klasse zu ner Template-Klasse ableitet *


  • Mod

    blurbs schrieb:

    Ich finde, dass das eine beschissene Sackgasse von C++ ist.

    blurbs schrieb:

    Gibt es eigentlich einen Grund dafür, dass das so ist?

    Nein, die wollten bloß, dass du genervt bist.



  • Das find ich aber jetzt mal recht Scheiße von dir.

    Warum haben die das denn nicht hacky-mäßig einfacher umgestaltet.

    Jeder Mensch kann doch durch äugliche Logik erkennen, um was für eine Funktion es sich handelt, die aufgeruft werden soll



  • Hi,

    erst mal: Eine Templateklasse ist eine bestimmte Instanziierung eines Klassentemplates. Ich nehme mal an, daß Du Klassentemplate meinst.

    Betrachte folgenden Code:

    template <typename T>
    class baseTemplate
    {
        foo()
        {
        }
    };
    
    template <typename T>
    class derivedTemplate : public baseTemplate<T>
    {
        bar()
        {
            foo();
        }
    };
    
    template <>
    class baseTemplate<int>
    {
        nixFoo()
        {
        }
    };
    
    void foo()
    {
    }
    
    int main(void)
    {
        derivedTemplate<int> tmp;
    
        tmp.bar();
    }
    

    Welches foo() soll denn int Zeile 14 aufgerufen werden? Um solche Ambivalenzen zu vermeiden ist es erforderlich genau anzugeben, was Du willst.

    VG



  • TO BE DELETED
    sorrry


Log in to reply