C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

tableau et operator[]

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Dug
Guest





PostPosted: Tue Nov 16, 2004 4:24 pm    Post subject: tableau et operator[] Reply with quote



Voila, j'essai de créer une classe tableau et je bute sur
l'operator[].
Ce que je comprend pas c'est comment écrire l'operator[] pour affecter
une valeur à un élément de mon tableau.

par exemple pour faire:
struct Tab{
....
};

Tab[i] = valeur;

Car il faut bien que je passe à la fonction operator[] une valeur
d'index pour savoir à quel élément je dois affecter, et la valeur à
affecter .. ?

Le problème c'est que operator[] ne prend qu'un seul argument.
Quelqu'un peut m'expliquer comment contourner cette obligation?
Back to top
Fabien LE LEZ
Guest





PostPosted: Tue Nov 16, 2004 5:03 pm    Post subject: Re: tableau et operator[] Reply with quote



On 16 Nov 2004 08:24:39 -0800, [email]dug8C (AT) hotmail (DOT) com[/email] (Dug):

Quote:
Ce que je comprend pas c'est comment écrire l'operator[] pour affecter
une valeur à un élément de mon tableau.

Il faut que l'opérateur renvoie soit une référence vers la variable à
modifier, soit un proxy.


--
;-)

Back to top
drkm
Guest





PostPosted: Tue Nov 16, 2004 7:32 pm    Post subject: Re: tableau et operator[] Reply with quote



[email]dug8C (AT) hotmail (DOT) com[/email] (Dug) writes:

Quote:
Le problème c'est que operator[] ne prend qu'un seul argument.
Quelqu'un peut m'expliquer comment contourner cette obligation?

Retourne une référence :

int & MyIntegerArray::operator[]( int i ) {
return myArray[ i ] ;
}

La clef est que l'opérateur d'indexation ne sert qu'à indexer, à
récupérer une valeur au moyen d'une clef. L'affectation à cette
valeur relève de l'opérateur d'affectation (du type stocké dans ton
tableau, celui-ci n'ayant plus rien à voir dans l'histoire) :

~> cat fclcxx.cc
#include <iostream>
#include <ostream>

struct A {
A & operator=( A const & lhs ) {
std::cout << "A::=" << std::endl ;
return * this ;
}
} ;

struct B {
A & operator[]( int index ) {
std::cout << "B::[]" << std::endl ;
return myA ;
}
private:
A myA ;
} ;

int main() {
B b ;
b[ 0 ] = A() ;
}
~> g++ -o fclcxx fclcxx.cc -Wall -ansi -pedantic
~> ./fclcxx
B::[]
A::=

Tu peux également retourner un Proxy. Cfr. les archives du groupe
pour de nombreux exemples <URL:http://groups.google.com>.

--drkm

Back to top
jmarc
Guest





PostPosted: Tue Nov 16, 2004 9:42 pm    Post subject: Re: tableau et operator[] Reply with quote

moi je suis débutant mais je me lance un truc peut etre du genre:

class truc
{
int nbelem;
int * adr;
/*par exemple*/
public:
int & operator[] (int i)
{ return adr[i];}

enfin par exemple

"Dug" <dug8C (AT) hotmail (DOT) com> a écrit dans le message de news:
[email]1999b9d8.0411160824.50cf8e41 (AT) posting (DOT) google.com[/email]...
Quote:
Voila, j'essai de créer une classe tableau et je bute sur
l'operator[].
Ce que je comprend pas c'est comment écrire l'operator[] pour affecter
une valeur à un élément de mon tableau.

par exemple pour faire:
struct Tab{
...
};

Tab[i] = valeur;

Car il faut bien que je passe à la fonction operator[] une valeur
d'index pour savoir à quel élément je dois affecter, et la valeur à
affecter .. ?

Le problème c'est que operator[] ne prend qu'un seul argument.
Quelqu'un peut m'expliquer comment contourner cette obligation?



Back to top
dug
Guest





PostPosted: Tue Nov 16, 2004 10:01 pm    Post subject: Re: tableau et operator[] Reply with quote

drkm <usenet.fclcxx (AT) fgeorges (DOT) org> wrote in
news:wkoehxd1xw.fsf (AT) fgeorges (DOT) org:


Quote:
Retourne une référence :

int & MyIntegerArray::operator[]( int i ) {
return myArray[ i ] ;
}

La clef est que l'opérateur d'indexation ne sert qu'à indexer, à
récupérer une valeur au moyen d'une clef. L'affectation à cette
valeur relève de l'opérateur d'affectation (du type stocké dans ton
tableau, celui-ci n'ayant plus rien à voir dans l'histoire) :

En effet c'était confus dans ma tête, merci pour cette explication claire
:)

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.