søppel Skrevet 16. mai 2004 Del Skrevet 16. mai 2004 Hi there, Bruker GCC 3.4 og har støtt på et problem. Dette er egentlig ikke lov i følge standaren, men det er alikevell en nyttig sak som har fungert tidligere: // "Type2Type" template<typename T> struct Type { typedef T type; }; // struct Type template<class T> class Bah { typedef typename Type<T>::type the_friend; friend class the_friend; }; // class Bah Noen som vet om noen andre omveier som gir samme effekt? Lenke til kommentar
søppel Skrevet 16. mai 2004 Forfatter Del Skrevet 16. mai 2004 Uhm .. fannt ut selv: #include <iostream> using namespace std; // "Type2Type" template<typename T> struct Type { typedef T type; }; // struct Type template <class T> class Bah { public: Bah() { test = 123; } // constructor friend class Type<T>::type; private: int test; }; // class Bah class A { public: A(Bah<A>& bah) { cout << "Bah::test: " << bah.test << endl; } // constructor }; // class A int main() { Bah<A> bah; A a(bah); return(0); } // main() Lenke til kommentar
kjetil7 Skrevet 16. mai 2004 Del Skrevet 16. mai 2004 C/C++ Users Journal har hatt en interessant artikkelserie rundt dette emnet. Siste del finner du her: http://www.cuj.com/documents/s=8943/cujexp0312wilson2/ Meget interessant Lenke til kommentar
søppel Skrevet 16. mai 2004 Forfatter Del Skrevet 16. mai 2004 Ja, det var den jeg leste litt på og tenke jeg skulle teste teknikken med GCC3.4. Tok å sendte forfatteren en liten beskjed. :] Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå