Problème surement facile de cast (C++)

Fermé
Lynyrd81 Messages postés 59 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 24 avril 2011 - 23 mars 2011 à 16:59
Lynyrd81 Messages postés 59 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 24 avril 2011 - 27 mars 2011 à 20:57
Bonjour à tous,

J'ai un petit souci en C++.
Tres simplement j'ai une classe Darray qui représente un tableau. J'ai redefini pour cela l'operateur (). Le truc que je ne comprend pas c'est que les deux codes suivants ne donne pas le même resultat:

a(1) = 0.0;


et

((Darray) a)(1) = 0.0;


(sachant que a est du type Darray).
Le deuxieme ne change pas la valeur de a(1)...
Est-ce que vous savez quel est le problème?

Merci d'avance!


2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
23 mars 2011 à 18:21
Tout dépend comment tu as redéfinis ()

R T::operator ()(Arg1 a1, Arg2 a2, ...); // voir Wikipedia

Cependant je me demande s'il ne serait pas plus cohérent de redéfinir plutôt []

R& T::operator [](const T2& b); // voir Wikipedia
0
Lynyrd81 Messages postés 59 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 24 avril 2011 1
27 mars 2011 à 20:57
Ca c'est dans le sujet du TP qu'ils nous disent d'utiliser (). Il est tout simplement défini comme
double & Darray::operator()(int i)
{ return data[i]; }

Sachant que data est un champ
double *data

Je ne vois pas trop pourquoi la façon d'implémenter () change quelquechose. Pour moi les deux lignes sont strictement équivalentes...
0