enum im ktor?



  • hallo
    ich habe eine pure virtual class:

    class A
    {
    public:
        virtual void test();
        enum TYPE{WIENER,FRANKFURTER, DEBREZINER};
    }
    

    und eine klasse B die von A abgeleitet wird:

    class B
    {
    public:
        B(TYPE t);
        virtual void test();
    };
    

    und das testprogramm:

    #include "B.h"
    int main()
    {
        auto_ptr<A> b(new B(WIENER)); // fehler!!! lösung???
        b->test();
        return 0;
    }
    

    wie kann ich das problem lösen und feste enum werte im ctor benutzen?

    danke



  • ups:
    klasse B richtig:

    class B : public A
    { 
    public: 
        B(TYPE t); 
        virtual void test(); 
    };
    


  • Das enum ist Teil der Klasse A - also musst du den richtigen Scope ansprechen.

    A* a=new A(A::WIENER);



  • muss es für eine pur virutal funktion nicht virtual void test() = 0 heißen=



  • markus1 schrieb:

    hallo
    ich habe eine pure virtual class:

    class A
    {
    public:
        virtual void test();
        enum TYPE{WIENER,FRANKFURTER, DEBREZINER};
    }
    

    [...]

    Nein hast du nicht 🙂
    1. Gibt es keine pure virtual class. Nur abstrakte Klassen, Protokoll-Klasse, pure virtual Funktionen, virtuelle Basisklassen (bezieht sich auf die Vererbung)...
    2. Fehlt für eine abstrakte Klasse (oder eine pure virtual Methode) ein = 0 hinter test.

    PS:
    Aber da da auch ein Semikolon hinter der Klassendefinition fehlt, gehe ich mal davon aus, dass es sich hier um Pseudo-Code handelt 🙂


Anmelden zum Antworten