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« erhaltenWenn 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_Pairhabe 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;