surcharge de l'operateur []

surcharge de l'operateur [] - C++ - Programmation

Marsh Posté le 10-03-2005 à 14:10:56    

Voila jai une classe vecteur:
 

Code :
  1. class vecteur
  2. {
  3.   int taille;
  4.   float *tab;
  5.   public:
  6.     vecteur();
  7.     vecteur(int);
  8.     vecteur(vecteur& );
  9. }


 
il faut que je surcharge l'operateur [] pour pouvoir acceder aux elements: v[0]=2, v[1]=0, ...
 
jai penser a cela:

Code :
  1. float& operator[](int);
  2. float& vecteur::operator[](int e)
  3. {
  4.   return tab[i];
  5. }


 
mais celà ne fonctionne pas. je crois que je suis un peu perdu
donc si qqn pouvait m'aider ca serait sympa.
 
merci

Reply

Marsh Posté le 10-03-2005 à 14:10:56   

Reply

Marsh Posté le 10-03-2005 à 14:18:33    

C'est à dire "ca marche pas" ?
 

Citation :

float& vecteur::operator[](int e)
{
  return tab[i];
}


 
int e, tab[i]... C'est une faute de frappe ?
Sinon par précaution tu devrais vérifier que e (ou i :) ) est bien inférieur a vecteur::taille.

Reply

Marsh Posté le 10-03-2005 à 14:19:29    

et aussi supérieur à 0 ...

Reply

Marsh Posté le 10-03-2005 à 14:20:49    

ou est le destructeur ? ou est l'operator= ? vecteur(vecteur& ); est incorrect

Reply

Marsh Posté le 10-03-2005 à 14:26:44    

Taz a écrit :

ou est le destructeur ? ou est l'operator= ? vecteur(vecteur& ); est incorrect


 
comment ca incorrect?
 
le desctructeur j'ai fais ca:

Code :
  1. ~vecteur();
  2. ~vecteur()
  3. {
  4.   delete[] tab;
  5. }


 
sinon pr les test d'indice j'en ai pa besoin vu ke jai tester a la main avec des indices qui sont valides.


Message édité par tellier le 10-03-2005 à 14:28:35
Reply

Marsh Posté le 10-03-2005 à 14:27:30    

tellier a écrit :

comment ca incorrect?


 
 
vecteur(const vecteur & )

Reply

Marsh Posté le 10-03-2005 à 14:29:05    

et ton operator= :o

Reply

Marsh Posté le 10-03-2005 à 14:31:55    

pour le constructeur par copie c'est ca et apparement ca pose probleme:
 
 
edit:

Code :
  1. vecteur::vecteur(const vecteur& v)
  2. {
  3.   taille = v.taille;
  4.   tab = new float[taille];
  5.   for(int i=0;i<taille;i++)
  6.   tab[i] = v.tab[i];
  7. }


 
dsl mais sous unix les copier coller cest pas la joie...


Message édité par tellier le 10-03-2005 à 14:34:32
Reply

Marsh Posté le 10-03-2005 à 14:32:57    

tellier a écrit :

pour le constructeur par copie c'est ca et apparement ca pose probleme:
 

Code :
  1. vecteur::vecteur(int t)
  2. {
  3.   taille = v.taille;
  4.   tab = new float[taille];
  5.   for(int i=0;i<taille;i++)
  6.   tab[i] = v.tab[i];
  7. }



 
tu t'es relu quand t'as bu ?

Reply

Marsh Posté le 10-03-2005 à 14:33:07    

Taz a écrit :

et ton operator= :o


 

Code :
  1. vecteur& vecteur::operator=(int e)
  2. {
  3.     for(int i=0;i<taille;i++)
  4.       tab[i] = e;
  5.     return *this;
  6. }

Reply

Marsh Posté le 10-03-2005 à 14:33:07   

Reply

Marsh Posté le 10-03-2005 à 14:46:52    

... c'est la faute du copier coller maintenant ... nan mais relis toi bordel :o

Reply

Marsh Posté le 10-03-2005 à 14:54:44    

je dois également réalisé l'opération    v2++
 

Code :
  1. vecteur& vecteur::operator++()
  2. {
  3.   for(int i=0;i<taille;i++)
  4.     tab[i] = tab[i] + 1;
  5.   return *this;
  6. }


 
mais v2 n'est pas changer...

Reply

Marsh Posté le 10-03-2005 à 14:59:41    

c'est quand tu veux pour écrire un operator=

Reply

Marsh Posté le 10-03-2005 à 15:02:33    

pourquoi jai besoin d'un operateur = pour des float?

Reply

Marsh Posté le 10-03-2005 à 15:07:37    

allo, on parle de ta classe vecteur :o

Reply

Marsh Posté le 10-03-2005 à 15:10:09    

Taz a écrit :

et ton operator= :o


 

Code :
  1. vecteur& vecteur::operator=(int e)
  2. {
  3.     for(int i=0;i<taille;i++)
  4.       tab[i] = e;
  5.     return *this;
  6. }


 
 
 
???

Reply

Marsh Posté le 10-03-2005 à 15:11:46    

... je crois que t'as pas bien compris ce qu'est l'affecation toi

Reply

Marsh Posté le 10-03-2005 à 15:13:35    

ben peut etre!
mais jai commencer le c++ aujourd'hui.
 
moi j'ai ce truc a faire, je suis obliger de le taper un pauve unix à la con et en plus t'es agressif comme j'sais pas quoi!
 
je t'oblige pas à répondre, donc si ca te fait chier tu répond pas!

Reply

Marsh Posté le 10-03-2005 à 15:17:54    

il veux un opérateur qui se charge de:
 
vecteur a,b;
 
a=b;
 
et pas:
 
int zog=56;
a=zog;
 

Reply

Marsh Posté le 10-03-2005 à 15:18:30    

c'est quoi le problème avec unix ?
 
 
operator= c'est ce qui intervient quand tu fais
 
x = y
 
genre
 
int i, j;
i = 0;
j = i;
 
fais un peu marcher ta boite a cerveau ...

Reply

Marsh Posté le 10-03-2005 à 16:11:36    

C'est rééllement urgent ton projet ? parce que sinon il y a d'excellent sites pour apprendre le C++, chose que tu devrais faire avant de vouloir surcharger a tout va...

Reply

Marsh Posté le 10-03-2005 à 16:15:34    

le problème c'est pas tellement de surcharger, c'est de réfléchir à ce qu'on veut faire. Si on est capable de visualiser/utiliser les opérateurs qu'on a définit, c'est pas la peine de surcharger quoi que ce soit. Il faut penser en terme d'interface, de service rendu. Je vais surcharger operator= : comment est-ce que l'operator= déjà existant (synthétisé) est-il employé ? Quand ? Comment vais-je me servir de mon operator= ?

Reply

Marsh Posté le 10-03-2005 à 16:23:04    

Bonne explication de la POO :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed