Operateur doublé - C++ - Programmation
Marsh Posté le 25-11-2009 à 14:56:10
Bebs a écrit : Bonjour,
|
que veux tu dire par opérateur doublé ?
Tu veux juste que ton opérateur [] retourne une instance de quelque chose qui supporte =, non ?
Edit : j'aurais du lire l'exemple !
Il te suffit pour ca que ton opérateur crochets retourne une référence vers l'élémenty à assigner et basta ! (et n'oublie pas de faire un opérateur constant qui te retourne une référence constante au passage)
Edit 2 : quelle tête a ta structure de données ? C'est un vecteur de vecteurs ?
Marsh Posté le 25-11-2009 à 15:29:46
theshockwave a écrit : |
Oui, GroupVec est une sorte de "paquet" de vecteurs.
L'operateur [] est déjà surchargé pour faire
Code :
|
Ce que j'aimerai faire, c'est fabriquer un Vec dans un coin, et le mettre dans GroupVec autrement dit, faire une affectation dans l'autre sens.
Code :
|
Voici mon opérateur crochet qui me permet d'acceder à un Vec à l'interieur d'un GroupVec :
Code :
|
Marsh Posté le 25-11-2009 à 16:17:46
Bebs a écrit :
|
Excusez-moi d'écrire deux messages de suite, mais je ne peux pas mettre de référence pour mon opérateur crochet car l'objet retourné est local...
Marsh Posté le 25-11-2009 à 16:20:01
Bebs a écrit :
|
Ca ne te convient pas, ca ?
Code :
|
Edit : les const ref sur les types genre int, c'est le mal
Marsh Posté le 25-11-2009 à 16:22:31
Bebs a écrit : |
Et pourquoi est-il local ? Si tu manipules un groupe de vecteurs, pourquoi choisir de stocker les infos de ces vecteurs à la main plutôt que d'avoir ... un groupe de vecteurs (std::vector, c'est bien, aussi)
Marsh Posté le 25-11-2009 à 17:30:24
theshockwave a écrit :
|
Malheureusement, v[i] est un objet de type double* (puisque v est de type double**) et je voudrais retourner un objet de type Vec.
theshockwave a écrit : |
Je dois créer une classe avec des objets un peu particuliers et les standards ne sont pas suffisants...
Marsh Posté le 25-11-2009 à 17:35:59
Bebs a écrit : |
Je comprends bien, mais ma question était : si tu sais que ce sont des vecteurs que tu manipules dans ton conteneur (GroupVec) alors pourquoi éclater leurs composantes dans un tableau plutôt que de faire directement un tableau de "Vec" qui seront peut-être plus facile à manipuler ? Faire des copies de données dans tous les sens, ce n'est jamais une bonne idée. Quand, pour accéder simplement à la valeur d'un tableau, tu commences à devoir recopier les données, c'est mauvais signe.
Marsh Posté le 25-11-2009 à 17:55:15
deja arrete d'utiliser des double** et fait betement un vector<vector<double>> et renvoit des ref sur les vector interne ...
Marsh Posté le 26-11-2009 à 10:58:01
theshockwave a écrit : |
Joel F a écrit : deja arrete d'utiliser des double** et fait betement un vector<vector<double>> et renvoit des ref sur les vector interne ... |
Merci. vector semble être une bonne solution.
Je pense que je vais réussir à m'en sortir.
Marsh Posté le 25-11-2009 à 14:36:34
Bonjour,
je souhaiterai construire un operateur doublé qui serait du style :
Cela permettrait de faire :
La syntaxe que je propose ne fonctionne pas, et je n'ai rien trouvé les documentations un moyen de surcharger un opérateur doublé [] = avec deux paramètres.