Trepanator
Messages postés16Date d'inscriptionlundi 23 août 2004StatutMembreDernière intervention23 décembre 2008
-
7 nov. 2007 à 11:57
Trepanator
Messages postés16Date d'inscriptionlundi 23 août 2004StatutMembreDernière intervention23 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 .
Trepanator
Messages postés16Date d'inscriptionlundi 23 août 2004StatutMembreDernière intervention23 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>
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 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] ;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?