structure als template und typedef



  • Hallo,

    ich versuche im Moment so etwas:

    template <class T>
    struct CACHE
    {
        T* A;
        T* t;
        T* mk;
        int size;
        int vec_row;   
    };
    typedef unsigned int U_Int32;
    typedef U_Int32 Key;
    
    typedef std::pair< Key, CACHE> Cache_Pair;
    

    Der Compiler-Fehler lautet:

    Cache.h:74: Fehler: Typ/Wert des Arguments 2 passt nicht in Template-Parameterliste für »template<class _T1, class _T2> struct std::pair«
    Cache.h:74: Fehler:   einen Typ erwartet, »CACHE« erhalten
    

    Wenn ich natürlich in std::pair<Key, CACHE_DATA<T> > schreibe, schreit er dass T nicht definiert ist.

    Ich könnte natürlich überall wo Cache_Pair jetzt gebraucht wird diesen Großen Ausruck hinklatschen.....aber geht das nicht über ein typedef?

    Mein vorhaben ist also lediglich den Ausruck:

    std::pair<Key, CACHE_DATA<T> >
    

    zu ersetzen als:

    Cache_Pair
    

    habe ich die Möglihckeit wenn das Template noch nicht definiert ist?



  • Mati schrieb:

    Ich könnte natürlich überall wo Cache_Pair jetzt gebraucht wird diesen Großen Ausruck hinklatschen.....aber geht das nicht über ein typedef?

    Ein typedef ist eine Benennung eines konkreten Types. nicht eines noch undefinierten.

    cu André



  • Du könntest z.B. das typedef in CACHE anbieten, denn dort ist T bekannt. Dann sparst Du Dir zumindest die Abhängigkeit von Key beim definieren von den pairs.

    typedef unsigned int U_Int32;
    typedef U_Int32 Key;
    
    template <class T>
    struct CACHE
    {
        typedef std::pair< Key, T > PAIR;
    
        T* A;
        T* t;
        T* mk;
        int size;
        int vec_row;   
    };
    
    CACHE< int >::PAIR mypair;
    

Anmelden zum Antworten