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 

Pointeur de fonction membre static

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





PostPosted: Tue Jun 13, 2006 9:11 am    Post subject: Pointeur de fonction membre static Reply with quote



Bonjour,

Comment declarer a l'interieur d'une classe un tableau de fonction membre
static. (je trouve bizarre de trouver des exemples ou ce tableau est externe
a la classe)

Un truc du genre,

MaClass {

..../...
Static int (MaClass::*fonction[100])() ;
Static init_fonction();
..../...

}

De meme pour les appels est il possible de prefixer par la classe comme les
membres static

(MaClass::*fonction[12])();

Cette ecriture me semble plus logique.

Merci (je n'ai pas outil de dev pour verifier maintenant).
Back to top
kanze
Guest





PostPosted: Wed Jun 14, 2006 9:11 am    Post subject: Re: Pointeur de fonction membre static Reply with quote



Bruno CAUSSE wrote:

Quote:
Comment declarer a l'interieur d'une classe un tableau de
fonction membre static. (je trouve bizarre de trouver des
exemples ou ce tableau est externe a la classe)

Attention : l'adresse d'une fonction membre *statique* n'a pas
un type pointeur à fonction membre, mais un type pointeur à
fonction tout court.

Quote:
Un truc du genre,

MaClass {

.../...
Static int (MaClass::*fonction[100])() ;

Sans doute « static », et non « Static ». Ici, tu déclares
un tableau de pointeurs à fonction membre. Il faut encore une
définition ailleurs. Et les éléments sont bien des pointeurs à
membre ; tu ne peux donc pas y mettre l'adresse d'une fonction
membre statique.

Pour mettre des adresses des fonctions membre statique, c'est
simplement :
static int (*fonction[100])() ;

Quote:
Static init_fonction();
.../...

}

De meme pour les appels est il possible de prefixer par la
classe comme les membres static

(MaClass::*fonction[12])();

Non.

Quote:
Cette ecriture me semble plus logique.

Pas vraiment. Le « MaClass::* » fait partie du type, non du nom
de la variable. Il faut écrire :

(this->*(function[ 12 ]))() ;

On ne peut pas appeler une fonction à travers un pointeur à
fonction membre sans utiliser un objet ou un pointeur à un objet
(ici, this). C'est cet objet ou ce pointeur qui correspond au
« MaClass » (et c'est l'opérateur .* ou ->* qui remplace le *
de la déclaration).

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
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.