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).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
gbaudin
"Bruno CAUSSE" a écrit dans le message de news: C0B442FA.1C326%
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).
bonjour, ca ne serais pas plus simple de faire un truc du genre :
class MaClass { static int do_something_with_my_table ( ma_liste_de_fonction& maListe ) { }
static void init_fonction() { } };
"Bruno CAUSSE" <envoi@lesSpam.fr> a écrit dans le message de news:
C0B442FA.1C326%envoi@lesSpam.fr...
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).
bonjour,
ca ne serais pas plus simple de faire un truc du genre :
"Bruno CAUSSE" a écrit dans le message de news: C0B442FA.1C326%
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).
bonjour, ca ne serais pas plus simple de faire un truc du genre :
class MaClass { static int do_something_with_my_table ( ma_liste_de_fonction& maListe ) { }
static void init_fonction() { } };
Et maliste tu la declares ou? En dehors de la classe? MaClass devrait la connaître puisque je la souhaite "static" a la classe.
static int do_something_with_my_table ()
Bruno CAUSSE
dans l'article C0B442FA.1C326%, Bruno CAUSSE à a écrit le 13/06/06 10:24 :
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).
Un truc du genre fontionnerai?
typedef void (*Funct)( void );
class MaClass {
static Funct fonction[100];
};
que j'utiliserai (apres init) par
(MaClass::*fonction[id])();
dans l'article C0B442FA.1C326%envoi@lesSpam.fr, Bruno CAUSSE à
envoi@lesSpam.fr a écrit le 13/06/06 10:24 :
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).
dans l'article C0B442FA.1C326%, Bruno CAUSSE à a écrit le 13/06/06 10:24 :
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).
Un truc du genre fontionnerai?
typedef void (*Funct)( void );
class MaClass {
static Funct fonction[100];
};
que j'utiliserai (apres init) par
(MaClass::*fonction[id])();
Fabien LE LEZ
On Tue, 13 Jun 2006 10:24:58 +0200, Bruno CAUSSE :
MaClass {
"MaClasse", plutôt, ou "MyClass", non ?
.../...
Note que ce symbole indique que le texte continue sur la page suivante. Je suppose que tu voulais écrire : [...] Dans du code C++, je conseille de mettre ce symbole en commentaire, histoire d'avoir du code (à peu près) compilable :
// [...]
Static int (MaClass::*fonction[100])() ;
Les types "pointeur de fonction" sont généralement très compliqués à écrire, aussi je conseille d'utiliser un typedef.
Le code ci-dessous fonctionne, fait grosso modo ce que tu veux, mais n'est pas très propre. AMHA il y a une façon plus élégante de résoudre ton problème.
#include <iostream>
class C { public: typedef void (*Fonction) (int);
static void f0 (int); static void f1 (int);
enum { NB_FONCTIONS= 2 }; static Fonction const fct[NB_FONCTIONS]; };
On Tue, 13 Jun 2006 10:24:58 +0200, Bruno CAUSSE <envoi@lesSpam.fr>:
MaClass {
"MaClasse", plutôt, ou "MyClass", non ?
.../...
Note que ce symbole indique que le texte continue sur la page
suivante.
Je suppose que tu voulais écrire : [...]
Dans du code C++, je conseille de mettre ce symbole en commentaire,
histoire d'avoir du code (à peu près) compilable :
// [...]
Static int (MaClass::*fonction[100])() ;
Les types "pointeur de fonction" sont généralement très compliqués à
écrire, aussi je conseille d'utiliser un typedef.
Le code ci-dessous fonctionne, fait grosso modo ce que tu veux, mais
n'est pas très propre. AMHA il y a une façon plus élégante de résoudre
ton problème.
#include <iostream>
class C
{
public:
typedef void (*Fonction) (int);
static void f0 (int);
static void f1 (int);
enum { NB_FONCTIONS= 2 };
static Fonction const fct[NB_FONCTIONS];
};
On Tue, 13 Jun 2006 10:24:58 +0200, Bruno CAUSSE :
MaClass {
"MaClasse", plutôt, ou "MyClass", non ?
.../...
Note que ce symbole indique que le texte continue sur la page suivante. Je suppose que tu voulais écrire : [...] Dans du code C++, je conseille de mettre ce symbole en commentaire, histoire d'avoir du code (à peu près) compilable :
// [...]
Static int (MaClass::*fonction[100])() ;
Les types "pointeur de fonction" sont généralement très compliqués à écrire, aussi je conseille d'utiliser un typedef.
Le code ci-dessous fonctionne, fait grosso modo ce que tu veux, mais n'est pas très propre. AMHA il y a une façon plus élégante de résoudre ton problème.
#include <iostream>
class C { public: typedef void (*Fonction) (int);
static void f0 (int); static void f1 (int);
enum { NB_FONCTIONS= 2 }; static Fonction const fct[NB_FONCTIONS]; };
Les types "pointeur de fonction" sont généralement très compliqués à écrire, aussi je conseille d'utiliser un typedef.
Le code ci-dessous fonctionne, fait grosso modo ce que tu veux, mais n'est pas très propre. AMHA il y a une façon plus élégante de résoudre ton problème.
merci
ok ca compile, (je n'y serai pas arrivé seul), quel est la façon elegante?
-- Bruno Causse http://perso.wanadoo.fr/othello
Fabien LE LEZ <gramster@gramster.com> wrote:
Les types "pointeur de fonction" sont généralement très compliqués à
écrire, aussi je conseille d'utiliser un typedef.
Le code ci-dessous fonctionne, fait grosso modo ce que tu veux, mais
n'est pas très propre. AMHA il y a une façon plus élégante de résoudre
ton problème.
merci
ok ca compile, (je n'y serai pas arrivé seul), quel est la façon
elegante?
Les types "pointeur de fonction" sont généralement très compliqués à écrire, aussi je conseille d'utiliser un typedef.
Le code ci-dessous fonctionne, fait grosso modo ce que tu veux, mais n'est pas très propre. AMHA il y a une façon plus élégante de résoudre ton problème.
merci
ok ca compile, (je n'y serai pas arrivé seul), quel est la façon elegante?
-- Bruno Causse http://perso.wanadoo.fr/othello
Fabien LE LEZ
On Tue, 13 Jun 2006 23:55:54 +0200, (Bruno Causse):
quel est la façon elegante?
Je ne sais pas, puisque je ne connais pas le problème que tu cherches à résoudre par ton histoire de pointeurs de fonctions.
On Tue, 13 Jun 2006 23:55:54 +0200, pasde.hcyrano.spam@free.fr (Bruno
Causse):
quel est la façon
elegante?
Je ne sais pas, puisque je ne connais pas le problème que tu cherches
à résoudre par ton histoire de pointeurs de fonctions.
On Tue, 13 Jun 2006 23:55:54 +0200, (Bruno Causse):
quel est la façon elegante?
Je ne sais pas, puisque je ne connais pas le problème que tu cherches à résoudre par ton histoire de pointeurs de fonctions.
kanze
Bruno CAUSSE wrote:
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.
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])() ;
Static init_fonction(); .../...
}
De meme pour les appels est il possible de prefixer par la classe comme les membres static
(MaClass::*fonction[12])();
Non.
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
Bruno CAUSSE wrote:
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.
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])() ;
Static init_fonction();
.../...
}
De meme pour les appels est il possible de prefixer par la
classe comme les membres static
(MaClass::*fonction[12])();
Non.
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
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.
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])() ;
Static init_fonction(); .../...
}
De meme pour les appels est il possible de prefixer par la classe comme les membres static
(MaClass::*fonction[12])();
Non.
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