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