Bonjour,
alors ma grande question est:
Je fais une classe vecteur. Pour l'indexation, j'utilise l'opérateur (), qui va me retourner la valeur du vecteur à l'indice qu'on lui aurait entré. Est-ce qu'il est possible de ne pas renvoyer de référence mais la bonne valeur?
Pour etre plus précis:
Je suis en train d'interfacer une librairie de Calcul Scientifique (Petsc pour ceux qui connaissent). Elle a déjà tout un ensemble de fonctions pour gérer les vecteurs (je n'ai pas besoin de la classe <vector> hein). Comme la structure des vecteurs m'est inconnue, j'accède aux valeurs du vecteur grace à une fonction getvalue. Donc, j'ai quelque chose qui ressemble à ca:
Mais bien entendu, en retournant une référence locale, cela ne peut marcher. Donc la première idée que j'ai eu, c'est d'ajouter dans ma classe vecteur, un membre "value" pour donner ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 double& vecteur::operator() (int i) { double valeur; valeur = getvalue(i); }
Là, ca a marché parfaitement. Jusquà ce que je change de machine et donc de compilateur. Auparavant, je compilais sous gcc 4.0.1. En changeant de machine, j'ai dû me remettre à gcc 3.4.4. Le problème est que le programme n'a pas le temps de lire ou de changer le bon 'value' (c'est l'impression que j'en ai). Donc, il me sort toujours le même résultat...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 double& vecteur::operator() (int i) { value = getvalue(i); }
Je voudrais donc avoir votre avis et si possible des conseils pour ne pas avoir à me taper une méthode getvalue qui ne sera pas jolie et facilement utilisable.
(un x(1) est mieux qu'un x.getvalue(1) non?)
Merci
Partager