(-: Surcharge d'operateur :-)

Résolu
Trepanator Messages postés 16 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 23 décembre 2008 - 7 nov. 2007 à 11:57
Trepanator Messages postés 16 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 23 décembre 2008 - 8 nov. 2007 à 08:15
Salut,

    j'aimerai savoir comment surcharger un operateur d'affectation de tableau générique.

    j'ai déjà créé  dans mon .h le modèle suivant :
    -->    Element operator[]    (int InIndex) ;
    ca, ca fonctionne très bien, je peux donc écrire dans le main :
       int i ;
       C_Tableau a(5) ;// Le constructeur est déjà écrit.
       i = a[4] ;                        //  Me retourne  la valeur de la  dernière case du tableau.

    Maintenant j'aimerai écrire la chose suivante :
    a[4] = i ;                           // Le but est d'affecter une case du tableau en surchargeant les opérateurs = et []
    Comment m'y prendre ?    

ATTENTION : nous parlons ici d'une classe tableau redimensionnable et générique .  

Merci à vous.

Chuck Norris ne dort pas. Il attend.

5 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
7 nov. 2007 à 13:06
Changer la définition de ton tableau:
Element & operator[]    (int InIndex) ;
3
Trepanator Messages postés 16 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 23 décembre 2008
7 nov. 2007 à 14:31
Merci pour ta réponse rapide et efficace.
Mais si tout se passait comme je le prévois, je ne serai pas codeur mais maitre du monde :-)

Alors voici un petit plus sur le même sujet (a peu près)

template<class Element> Element & C_Tableau<Element>::operator[] (int InIndex) const
{
    if ((InIndex>=0) && (InIndexest la fonction résultat de la réponse à mon questionnement premier.

Comment faire pour empecher un dépassemeent d'indice ?
comme vous pouvez le constater, j'ai coller un else qui me lève une erreur lors de la compilation.
 error C2440: 'return' : cannot convert from 'const int' to 'double &'
 Ici le 'double &' est le type <class Element>

Merci encore

Bonne journée

             '"""'
              - O
/--------o00---0---00o------\
|                           |
|        Trepanator         |
| @dr : yb0@numericable.fr  |
|                           |
\----------oOO---OOo--------/
0
Trepanator Messages postés 16 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 23 décembre 2008
7 nov. 2007 à 15:47
Reponse de moi même,

C.F réponse de [auteur/LUHTOR/15482.aspx luhtor] (encore lui, mais il est partout :-) la partie sur les exceptions.

http://www.cppfrance.com/codes/TABLEAU-3D-GENERIQUE_35189.aspx
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
7 nov. 2007 à 23:44
Dans ton cas, un petit assert est parfait. Et de plus, utilise un type non signé plutot qu'un int. De cette facon, tu as juste a tester si l'index est trop grand

template<class Element> Element & C_Tableau<Element>::operator[] (unsigned int InIndex) const
{
     assert(InIndex < Inc_NbElement);
     return InC_Tableau[InIndex] ;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Trepanator Messages postés 16 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 23 décembre 2008
8 nov. 2007 à 08:15
Comme d'hab, Efficace et pertinent.

Merci au poitevin (d'etudes du moins).
0
Rejoignez-nous