 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
meow Guest
|
Posted: Thu Jul 07, 2005 2:38 pm Post subject: template et classe cachée... ça coince |
|
|
Je crois que ce genres de questions ont déjà été adressées, mais
je n'ai pas bien compris les quelques réponses connexes que j'ai pu
lire... Et puis une seconde couche ne fait jamais de mal... Alors
voilà :
je définis une classe Pair dans une classe A, le tout templaté par
T, puis je tente de redéfinir l'opérateurs << sur A
A<T>::Pair :
--------------------------------------
template <class T>
class A {
public:
struct Pair{
public:
T fst;
T scnd;
};
T val;
Pair val2;
};
template <class T>
std::ostream& operator << (std::ostream& o,A
{o<
template
std::ostream& A<T>::operator << (std::ostream& o,typename A
{o<<"["<
int main(){
A
a.val = 1;
a.val2.fst=2;
a.val2.scnd=3;
std::cout<
std::cout<
std::cout<
return 0;
}
-------------------------------
et ça crash sur std::cout<
la définition de << sur A
faits rigolos :
1. simplement ajouter une définition de << sur A
main "résoud" le
problème
2. redéfinir << dans la classe Pair comme :
friend std::ostream& A
A
"résoud" aussi le problème !
3. définir pair comme templatisée par D (très laid) résoud aussi le
problème, c.à.d :
---------
template
class A {
public:
template <class D>
struct Pair{
public:
T fst;
T scnd;
};
T val;
Pair<T> val2;
};
template <class T>
std::ostream& operator << (std::ostream& o,typename A
{o<<"["<
-----------
Le problème c'est que :
a.) je ne comprends rien de ce que j'ai fait
b.) ça ne résoud pas mon problème initial puisque je suis dans un
cas
concret où j'utilises une classe sur le modèle de A (avec définition
de
classe cachée utilisant le template de A) et que j'aimerai redéfinir
<<
sur cette dernière...
Si vous aviez au choix quelques explications sur ces trois cas de
figure / un pointeur vers une bonne doc / une solution à mon problème
de base : redéfinition de << sur A
Cordialement
--Ben
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|