søppel Skrevet 16. mai 2004 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?
søppel Skrevet 16. mai 2004 Forfatter 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()
kjetil7 Skrevet 16. mai 2004 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
søppel Skrevet 16. mai 2004 Forfatter 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. :]
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å