RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Classe Template et membre statique

Forum : C++
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ C++

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C++

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
JMV06
Nouveau membre
Inscrit : 26/07/2007
Messages : 1
Message
#139271
Posté le 26/07/07 à 13:31
Bonjour à tous,

J'ai récupéré sur le net () un exemple de gestion des enum au travers d'une classe template qui fonctionnait correctement sous Linux moyennant quelques modifications mineures. Malheureusement, en passant au compilateur gcc version 3.4.5 20051201, après une correction de l'initialisation du membre statique pour que le code compile, le programme plante à l'exécution (segmentation fault).
A priori l'initialisation du membre statique s_instances n'est pas effectué correctement mais je n'arrive pas à m'en sortir.
Merci d'avance pour votre aide.

La classe (extrait):

#include <set> template <class T> class Enum { private: ... // Comparison functor for the set of instances struct Enum_Ptr_Less: public std::binary_function<const Enum<T>*, const Enum<T>*, bool> { bool operator()(const Enum<T>* E_1, const Enum<T>* E_2) { return E_1->Get_Value() < E_2->Get_Value(); } }; protected: // Constructors Enum(int Value): m_value(Value) { s_instances.insert(this); }; public: // Compiler-generated copy constructor and operator= are OK. typedef typename std::set<const Enum<T>*, Enum_Ptr_Less> instances_list; typedef typename instances_list::const_iterator const_iterator; ... private: int m_value; static instances_list s_instances; };


Le main:

#include "Enum.h" typedef enum _e_MODE { MODE_OFF = 0, MODE_ON = 1 } MODE; class MODE_Enum: public Enum<MODE_Enum> { private: explicit MODE_Enum(int Value): Enum<MODE_Enum>(Value) { } public: static const MODE_Enum mode_on; static const MODE_Enum mode_off; }; template <class T> typename Enum<T>::instances_list Enum<T>::s_instances; /* Code avec l'ancienne version du compiltaeur Enum<SONAR_MODE_Enum>::instances_list Enum<SONAR_MODE_Enum>::s_instances; qui provoque l'erreur: error: too few template-parameter-lists */ const MODE_Enum MODE_Enum::mode_off(MODE_OFF); const MODE_Enum MODE_Enum::mode_on(MODE_ON); int main(int argc, char* argv[]) { }

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2547
Message
#139343
Posté le 27/07/07 à 12:02
Je te conseille ce lien pour mieux gérer ta liste (qui n'est qu'un simple singleton en fait) :
http://loulou.developpez.com/tutoriels/moteur3d/partie1/#L3.4
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 


    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.