begin process at 2012 05 28 05:23:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

adresse d'une fonction membre d'une classe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

adresse d'une fonction membre d'une classe

dimanche 2 janvier 2005 à 16:53:01 | adresse d'une fonction membre d'une classe

gagah1

Membre Club
Salut à tous!

Je voudrais avoir l'adresse mémoire d'une fonction membre d'une classe, alors que l'ISO C++ l'interdire l'accès.
Je m'explique:
J'ai une classe exemple:
class CXx
{
public:
.......
int fn(int);
.....
};

et j'ai une déclaration de fonction:

int (*fnglobal)(int);
et une classe

CXx classeX;

et quand je veux recuperer l'adresse :
fnglobal = &classeX.fn;

le compilateur m'envoie une erreur:
>>ISO C++ interdire l'accès de l'adresse mémoire d'une membre de la classe CXx.
Donc comment je fais pour avoir cette adresse mémoire? Merci!
dimanche 2 janvier 2005 à 18:01:26 | Re : adresse d'une fonction membre d'une classe

plus_plus_fab

C'est pas possible, le typage est trop fort !
Si ça l'était, tu pourrais parvenir à violer l'encapsulation.
Tu veux t'en servir pour l'appeler autrement que depuis un objet ?
Dans ce cas voir les adaptateurs de fonction membre (mem_fun, mem_fun_ref)
dimanche 2 janvier 2005 à 18:24:00 | Re : adresse d'une fonction membre d'une classe

gagah1

Membre Club
Tu peux m'expliquer ces adaptateurs de fonction membre?
dimanche 2 janvier 2005 à 18:25:11 | Re : adresse d'une fonction membre d'une classe

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Non seulement c'est déconseillé (il faut se rappeller qu'il s'agit de classe, et donc, la classe doit être instanciée pour pouvoir accèder à ses membres, et donc, les adresses sont toujours modifiées) mais c'est interdit !

Il vaux mieux passer par une fonction assistante de la classe, en dehors de celle-ci, qui puisse faire ce que tu veux. Tu peux par exemple lui passer un pointeur vers l'objet voulut...
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
dimanche 2 janvier 2005 à 19:42:47 | Re : adresse d'une fonction membre d'une classe

cosmobob

salut,
sinon mets ta fonction fn en static, et normalement t'auras plus de problemes.

class CXx
{
public:
.......
static int fn(int);
.....
};


a++ ;)
dimanche 2 janvier 2005 à 20:51:52 | Re : adresse d'une fonction membre d'une classe

vecchio56

Administrateur CodeS-SourceS
Ce serait illogique de faire un truc comme ca, puisqu'il n'y aurait pas de this... ou alors ya un truc que j'ai pas compris
Comment appellerais tu fnglobal?
dimanche 2 janvier 2005 à 22:41:18 | Re : adresse d'une fonction membre d'une classe

gagah1

Membre Club
Merci pour ce petit débat très instructif.
lundi 3 janvier 2005 à 09:35:40 | Re : adresse d'une fonction membre d'une classe

ymca2003


C'est ça que tu veux faire ?

#include <stdio.h>
#include <stdlib.h>

class MyClass
{

public:

int MyMethod(int a) {return 2*a;}

};

typedef int (MyClass::*PFN)(int);

int main(int argc, char* argv[])

{

MyClass obj;

PFN pfn = MyClass::MyMethod;

printf("%d\n", (obj.*pfn)(2));

return 0;

}

lundi 3 janvier 2005 à 11:56:48 | Re : adresse d'une fonction membre d'une classe

gagah1

Membre Club

Je veux que PFN ne depend pas de MyClass , juste un pointeur d'une fonction globale comme j'ai précisé au-debut.

lundi 3 janvier 2005 à 11:58:54 | Re : adresse d'une fonction membre d'une classe

ymca2003

Alors là c'est pas possible si elle est pas static, les fct membres des classes necissitent un objet pour les appeler...

1 2

Cette discussion est classée dans : fonction, int, classe, adresse, membre


Répondre à ce message

Sujets en rapport avec ce message

Pointeur vers une fonction dans une classe ... [ par MoDDiB ] Supposons que j'ai la fonctionvoid Fonction(int test,int t);appartenant a la classe Cclass.Quelle est la syntaxe pour creer un pointeur vers cette fon Probleme avec les threads en C++ sour linux [ par benjamvs ] Bonjour,j'ai le probleme suivant a regler en C++je travaille sur les threads sous linux, avec la librairie "pthread"Lorsque je crée un thread, celui c Definition d'une classe membre d'une autre classe [ par raidentr ] Je veux définir une classe membre d'une atre classe, est ce que c'est possible ? Exemple :class voiture{public : char marque[128]; int annee; class co (__cdecl *) => kesako? [ par Oeil_de_taupe ] Bonjour tout le monde, J'ai créé deux classes qui représentent un protocole pour envoyer des données entre deux PC. Lors de l'appele de leur construc Fonction membre vers pointer non typé [ par foxz ] Est-il possible de convertir une fonction membre (d'une class) vers un pointer non typé(void*)class A{ int foo(int,int){};void init(){  void *t;  A *x pointeur de fonction membre [ par maximus4 ] bonjour a tous,je voudrai savoir comment on passe en paramètre d'une fonction membre une autre fonction membre d'une autre class déjà instanciéeex:cla Pointeur de fonction membre de classe dérivé en paramètre de fonction de classe mère [ par Fituza ] Bonsoir (encor moi c'est la dernière promis :D), je souhaiterai pouvoir passer la fonction QueryList de ma classe Client en paramètre de la fonction R Erreur lors d'un ajout de classe [ par bedrohung ] Bonsoir, je débute sur le C++ et je travaille sur un projet d'envoie de SMS via un modem GSM. J'utilise une classe liaison série pour communiquer avec utilisation des fichiers dans une fonction [ par chroctar ] Bonjour, Pourriez vous m'aider ? Je dois faire un projet qui consiste à créer un agenda numerique.Voila mon probleme :J'ai créé une fonction dans laqu Creer objet avec classe heritée [ par jonas03 ] Bonjour à tous,Voici mon problème : j'ai une classe personne et 2 classe dérivées interne et externe mais je veut créer dans mon main une personne mai


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales