begin process at 2012 05 29 13:46:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

pointeur static sur fonction :)


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

pointeur static sur fonction :)

mercredi 29 décembre 2004 à 22:48:10 | pointeur static sur fonction :)

luhtor

Certain reconnaitront surement le tutoriel en question. J'ai rajouté quelques trucs au gestionnaire d'exception, mais je bloque sur le point suivant:
Je n'arrive pas à initialiser un pointeur static, voila la class :

class CException : public std::exception
{
private:
static void (*reaction)(CException&); // le pointeur sur la fonction qui prend en paramètre une référence de CException.

public:
static void set_reaction(void (*fn)(CException&)) { reaction = fn; }
// la fonction pour changer ce pointeur
...

};

void CException::reaction = NULL; // et mon essai d'initialisation

Or le compileur refuse de compiler :)

J'ai essayer ca:
void CException::reaction(CException&) = NULL;

En fait, malgré les livres que j'ai sur les membres static et les sites internet, le pointeur de fonction ne pose pas de problème, mais le tout mélangé...

Merci d'avance pour ceux qui pourront m'aider :)
mercredi 29 décembre 2004 à 23:53:24 | Re : pointeur static sur fonction :)

plus_plus_fab

Réponse acceptée !
"Or le compileur refuse de compiler :)"
Ca ne m'étonne pas :)

void (*CException::reaction)(CException&) = 0; // pas NULL en C++
jeudi 30 décembre 2004 à 00:04:58 | Re : pointeur static sur fonction :)

DeAtHCrAsH

Ca aide pas mal de coder avec un bon bouquin de C/C++ a coté de soit.
N'hésites pas non plus a avoir un regard critique sur ton travail.
Exemple :

static void (*reaction)(CException&);
...
void CException::reaction = NULL;

Tu déclares un pointeur sur une fonction mais pourtant il ne figure nul part dans son affectation, d'ou la réponse de plus_plus_fab:

void (*CException::reaction)(CException&) = 0;

Essaye de rester logique et de ne pas faire semblant de comprendre ce que tu écris, ca t'éviteras beaucoup de soucis.

Shell
jeudi 30 décembre 2004 à 01:37:33 | Re : pointeur static sur fonction :)

luhtor

Bon c'est vrai que je patoge dans la semoule avec leur gestionnaire, j'ai pas l'habitude. De plus, le pointeur de fonction n'est pas du tout intuitif :) Donc c'est vrai, c'est pas logique ce que j'ai écris, mais c'est mieux que rien dans le sens ou, j'espère toujours que les messages d'erreurs m'aideront.

Tient d'ailleurs je suis le seul, ou les messages d'erreur de DevC++ sont vraiment "nul" ? (4.9.8.0)

Et merci encore, ca marche impec.
jeudi 30 décembre 2004 à 01:52:45 | Re : pointeur static sur fonction :)

vecchio56

Administrateur CodeS-SourceS
plus_plus_fab> Pas NULL en C++
Tu veux dire que NULL n'est pas cencé être défini quand on compile en C++?
Visual C++ le définit pourtant...
jeudi 30 décembre 2004 à 11:21:10 | Re : pointeur static sur fonction :)

luhtor

Ca pose un problème d'utiliser NULL ?
Moi je trouve ca beaucoup plus clair lorsqu'il s'agit d'initialiser des pointeurs.
jeudi 30 décembre 2004 à 15:39:23 | Re : pointeur static sur fonction :)

JCDjcd

si on fait int *p;
p = 0;


il n'y aura pas un warning du compilateur a propos du type ? (c'est pourquoi NULL est mieux cas il caste le 0 en (void*)0 et de plus je suis du meme avis : c'est beaucoups plus lisible).

Un deniere remarque, le C++ etant par definition compatible avec le C (oui car il est plus plus !), NULL existe aussi et marche tout autant.



Pourquoi faire simple quand on peut faire compliquer ?
jeudi 30 décembre 2004 à 17:19:19 | Re : pointeur static sur fonction :)

vecchio56

Administrateur CodeS-SourceS
"Pourquoi faire simple quand on peut faire compliquer ?"

S'il s'agit d'une signature, autant corriger la faute de conjugaison
jeudi 30 décembre 2004 à 17:33:28 | Re : pointeur static sur fonction :)

JCDjcd

Merci de me le faire remarquer.

Pourquoi faire simple quand on peut faire compliqué ?
jeudi 30 décembre 2004 à 18:38:52 | Re : pointeur static sur fonction :)

plus_plus_fab

en C++ le type de 0 est déterminé par le contexte. S'il s'agit d'un pointeur, cela indique qu'il ne pointe pas sur un objet. Cela est du au typage plus fort en C++ qu'en C.
En tout cas, Stroustrup le conseille.
en C, on utilise NULL.

1 2 3

Cette discussion est classée dans : fonction, static, void, pointeur, cexception


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 Pointeur sur fonction envoyé par dll [ par MoDDiB ] Voila ce que j'ai fais mais ca ne marche pas :Dll :#include BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){ retu Utilisation d'un pointeur de fonction membre [ par cyrcocq ] Bonjour,J'ai déjà discuté de ça ailleurs, on m'a conseillé d'autres méthodes, mais imaginons une classe contenant un ensemble de fonction accessibles illegal call of non-static member function [ par Zootella ] Hello all, J'ai une classe qui comprend une fonction static, jusque là pas de problémes, mais quand j'esseye d'appeler une fonction de la même classe Pointeur sur fonction ? [ par tintin72 ] Bonjour, J'ai un petit souci avec les pointeurs sur fonction. Voilà, j'ai une fonction qui prend comme argument un pointeur sur fonction: void maFonct Passer un pointeur sur une instance à une fonction membre static ? [ par tintin72 ] Bonjour, j'ai un problème pour passer un pointeur sur une instance ou l'adresse de l'instance à une fonction callback Windows. Je m'explique J'ai créé beginthread et socket [ par blueburry ] Bonjour,g un probleme avec la fonction _beginthread.je suis en train de creer une classe serveur ki doit accepter plusieurs connexions de clients.pour Fonction qui renvoi un pointeur sur un type objet [ par tintin72 ] Bonjour,j'aimerais savoir comment faire une fonction qui renvoi un pointeur sur un type objet.En fait j'aimerais pouvoir faire ça :class Cclasse{     void Static Virtual CALLBACK ? [ par anarchysniper ] Je dois créer une classe Timer avec sorte de gestion évènementielle à la manière des "events" des classes .NET. Mais comme ces "events" doivent être m Pointeur de Fonction [ par Ombitious_Developper ] Salut : Mon probléme est le suivant :Etant donné une classe class TMyClass{ // données membres public : void   Fonction(int ); // autres fonctions me


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 : 0,484 sec (4)

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