ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 2006
-
8 avril 2004 à 16:44
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008
-
11 avril 2004 à 21:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 11 avril 2004 à 21:49
Aussi pr la multiplication, tu peux tt à fait utiliser l'opérateur * pour un scalaire et pour un vecteur: c'est une surcharge tt à fait classique. Après, pour le produit vectoriel qui retourne un scalaire tu peux utiliser un autre opéro comme ^ par exemple, c'est une bonne idée, puisque tu ne peux pas surcharger la valeur de retour si les arguments de la fonction sont les mêmes.
surfeurnet
Messages postés68Date d'inscriptionvendredi 28 février 2003StatutMembreDernière intervention17 août 2005 11 avril 2004 à 20:56
ah ok le transmettre par adresse ! t'as raison c'est vrai que sa peut être lourd comme struture.
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 10 avril 2004 à 18:00
Ben, la valeur de retour des tes surcharges d'opérateurs, je te suggère de remplacer l'actuel "vecteur" par "vecteru&". Cela ne demande aucune modification du code, mais au lieu de renvoyer un objet complet (avec ttes ses propriétés etc...) la fonction renverra une adresse mémoire vers le nouvel objet. De cette manière, tu évites de surcharger la pile du programme avec plein de données: il n'y a que l'équivalent d'un int (4 octets sur une architecture 32 bits, peu importe) qui est stocké.
surfeurnet
Messages postés68Date d'inscriptionvendredi 28 février 2003StatutMembreDernière intervention17 août 2005 10 avril 2004 à 16:36
peut tu m'expliquer plus en détail stp ? merci.
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 9 avril 2004 à 23:15
tes opéros devraient renvoyer une référence (Vecteur&), ça épargenra de la place ds la pile ;-)
surfeurnet
Messages postés68Date d'inscriptionvendredi 28 février 2003StatutMembreDernière intervention17 août 2005 9 avril 2004 à 15:40
ouai j'en vais m'y mettre. merci.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 8 avril 2004 à 19:35
tu devrai rendre ta classe canonique, en rajoutant l'operateur = pour securiser tout ca
et tant que tu y est rajoute aussi les operateur de comparaison == et != qui sont facile a definire
aussi peut etre += -= *= /=
bonne chance
surfeurnet
Messages postés68Date d'inscriptionvendredi 28 février 2003StatutMembreDernière intervention17 août 2005 8 avril 2004 à 17:24
ok, merci
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 8 avril 2004 à 16:44
si j'ai bien compris, la classe Vecteur renfer un tableau de n valeurs de type double.
dans le cas, il faut déclarer ligne comme ceci :
double *ligne;
dans le constructeur faire :
ligne = new double[n];
dans le destructeur:
delete[] ligne;
de plus évite d'avoir le même nom pour un typedef et une variable:
typedef double *ligne;
ligne *ligne;
11 avril 2004 à 21:49
11 avril 2004 à 20:56
10 avril 2004 à 18:00
10 avril 2004 à 16:36
9 avril 2004 à 23:15
9 avril 2004 à 15:40
8 avril 2004 à 19:35
et tant que tu y est rajoute aussi les operateur de comparaison == et != qui sont facile a definire
aussi peut etre += -= *= /=
bonne chance
8 avril 2004 à 17:24
8 avril 2004 à 16:44
dans le cas, il faut déclarer ligne comme ceci :
double *ligne;
dans le constructeur faire :
ligne = new double[n];
dans le destructeur:
delete[] ligne;
de plus évite d'avoir le même nom pour un typedef et une variable:
typedef double *ligne;
ligne *ligne;
ça n'aide en rien an la compréhension