Mauvais choix de méthode lors de surcharge d'opérateur - C++ - Programmation
Marsh Posté le 20-01-2010 à 21:25:45
les operator<< n'ont pas à etre friend. 
Les friend tempalte c'ets souvent la cata à faire proprement. Sort moi ça de ta classe et ca devrait passer. 
 
Et sinon: 
 ![[:joel f:2] [:joel f:2]](https://forum-images.hardware.fr/images/perso/2/joel f.gif) 
  
 
c'ets quoi ce Polynome* suivant ? std::vector c'ets pas pr les chiens 
Marsh Posté le 21-01-2010 à 07:45:32
| Joel F a écrit : les operator<< n'ont pas à etre friend.  | 
 
 
std::list j `aurais tendance a dire... non ?
Marsh Posté le 21-01-2010 à 07:49:49
| kirua_sama a écrit :   | 
 
 
ca depend de ce qu'il fait. La contiguité intrinséque de vector est peut etre interessante. 
Marsh Posté le 21-01-2010 à 10:28:25
Le fond du problème ici, c'est que quand on a une surcharge entre l'instanciation d'un template de fonction et une fonction n'étant pas une instanciation de template, c'est cette dernière qui est choisie -- on peut appeler l'instanciation explicitement au prix d'une syntaxe plus lourde, surtout pour les opérateurs.
Marsh Posté le 21-01-2010 à 11:23:45
Merci pour vos réponses, effectivement mon problème principal venait de la définition de la surcharge à l'intérieur de la classe alors qu'elle devait être placée en dehors. 
Quant à l'utilisation de vector, je suis pas du tout spécialiste du c++ et apparement il existe une floppée de structures plus ou moins adéquates... Peut on accéder au reste de la liste à partir d'un élément de vector ou a-t-on besoin d'un programme chapeau pour gérer tout ca...? Les listes chaînées, c'est c-style mais ça marche très bien 
Marsh Posté le 21-01-2010 à 13:02:41
| futtersack a écrit :   | 
 
 
RTFG  
 
 
http://www.cppreference.com/wiki/stl/start 
http://www.cppreference.com/wiki/stl/vector/start 
http://www.cppreference.com/wiki/stl/list/start
Marsh Posté le 21-01-2010 à 15:18:14
| futtersack a écrit : Merci pour vos réponses, effectivement mon problème principal venait de la définition de la surcharge à l'intérieur de la classe alors qu'elle devait être placée en dehors.  | 
 
 
 si tu trouve que les Les listes chaînées vont 
 bien... et rapide pour ce que tu fait 
 c'est resolu!   
  
 
 pour c-style ou c++-style , il n ya pas une 
 question de style , C++ est un C avec ++ ...et avec 
 beacoup de function et lib aussi. 
Marsh Posté le 21-01-2010 à 16:03:26
le c c'ets du c, le c++ c'ets du c++. Melangez les deux, c'ets se préparer à de grosses déconvenues. 
 
les listes en c++, c'ets std::list. Point barre.
Marsh Posté le 21-01-2010 à 18:00:51
| Joel F a écrit : le c c'ets du c, le c++ c'ets du c++. Melangez les deux, c'ets se préparer à de grosses déconvenues.  | 
 
 
So true   
 
Marsh Posté le 20-01-2010 à 14:28:51
Bonjour à tous,
 ), je cherche à redéfinir l'opérateur << suivant le type de coefficient des polynomes :
), je cherche à redéfinir l'opérateur << suivant le type de coefficient des polynomes : 
pour un projet sur les polynomes (vous adorez
template <class T>
class Polynome
{
int degre;
T coefficient;
Polynome * suivant;
...
template <class U>
friend std::ostream &operator<< (std::ostream &out, const Polynome<std::complex<U> > &p) //pour les polynomes à coefficients complexes
{...}
friend std::ostream &operator<< (std::ostream &out, const Polynome<T> &p) // pour les autres polynomes
{...}
seulement, lors de l'execution sur un polynome complexe, le programme appelle la plus générique... Quelqu'un aurait-il une idée?
Merci encore.