Templatepolymorphie



  • Hallo,
    ich habe folgendes Problem :

    struct Base
    {
    };
    
    template<typename Type> struct Sub : protected Base
    {
    public: Sub<Type>()
            {
            }
    private: Type Test;
    };
    
    int main(void)
    {
        Base *base = 0;
        Sub<int> *sub = new Sub<int>();
        base = sub;
    }
    

    Der Compiler gibt mir eine Meldung (error C2243: 'Typumwandlung': Konvertierung von 'Sub<Type> *' zu 'Base *' ist bereits vorhanden, aber es kann nicht darauf zugegriffen werden.
    with
    [
    Type=int
    ]
    ) aus...
    Was bedeutet das ?
    Ich verwende VC++ 7.1.
    mfg BlueShift



  • Die Vererbung muß "public" sein:

    template<typename Type> struct Sub : public Base 
    { 
    ...
    };
    


  • hi,
    klar, wie dumm von mir... 😉
    mfg BlueShift


Log in to reply