Mauvais choix de méthode lors de surcharge d'opérateur

Mauvais choix de méthode lors de surcharge d'opérateur - C++ - Programmation

Marsh Posté le 20-01-2010 à 14:28:51    

Bonjour à tous,
 
pour un projet sur les polynomes (vous adorez :)), je cherche à redéfinir l'opérateur << suivant le type de coefficient des polynomes :
 
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.

Reply

Marsh Posté le 20-01-2010 à 14:28:51   

Reply

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]  
 
c'ets quoi ce Polynome* suivant ? std::vector c'ets pas pr les chiens

Reply

Marsh Posté le 21-01-2010 à 07:45:32    

Joel F a écrit :

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]  
 
c'ets quoi ce Polynome* suivant ? std::vector c'ets pas pr les chiens


 
std::list j `aurais tendance a dire... non ?


---------------
“L'éducation est l'arme la plus puissante que l'on puisse utiliser pour changer le monde”
Reply

Marsh Posté le 21-01-2010 à 07:49:49    

kirua_sama a écrit :


 
std::list j `aurais tendance a dire... non ?


 
ca depend de ce qu'il fait. La contiguité intrinséque de vector est peut etre interessante.

Reply

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.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

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 :)

Reply

Marsh Posté le 21-01-2010 à 13:02:41    

futtersack a écrit :


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 :)


 
RTFG :o
 
http://www.cppreference.com/wiki/stl/start
http://www.cppreference.com/wiki/stl/vector/start
http://www.cppreference.com/wiki/stl/list/start

Reply

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.
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 :)


 
 si tu trouve que les Les listes chaînées vont
 bien... et rapide pour ce que tu fait
 c'est resolu!  :ange:  
 
 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.

Reply

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.

Reply

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.
 
les listes en c++, c'ets std::list. Point barre.


 
So true  :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 21-01-2010 à 18:00:51   

Reply

Marsh Posté le 21-01-2010 à 23:28:03    


[:abnocte invictus] --------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed