IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

GCC Discussion :

Probl�me de compilation avec gcc sous code::blocks


Sujet :

GCC

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Par d�faut Probl�me de compilation avec gcc sous code::blocks
    Bonjour, je suis nouveau sur le forum. Je ne savais pas trop o� poster
    ce message: j'esp�re ne pas m'etre tromp� de rubrique...

    J'ai un petit probl�me avec la classe singleton. Voici le code:


    ******************************************************

    //=========================================
    // Classe SINGLETON
    //=========================================


    #ifndef SINGLETON_H
    #define SINGLETON_H


    template <class T>
    class Singleton
    {

    public :

    static T& Instance() // Instanciation & accession de type reference
    {
    if (!m_Inst) m_Inst = new T;
    return *m_Inst;
    }

    static T* PtrInstance() // Instanciation & accession de type pointeur
    {
    if (!m_Inst) m_Inst = new T;
    return m_Inst;
    }

    static void Destroy() // Liberation des ressources
    {
    delete m_Inst;
    m_Inst = NULL;
    }

    protected :

    Singleton() {}

    ~Singleton() {}

    private :

    static T* m_Inst; // Instance de la classe

    Singleton ( Singleton & ) ; // Supression du constructeur de copie
    void operator = (Singleton &) ; // Supression de la copie
    };

    template<class T> T* Singleton<T>::m_Inst = NULL; // ce qui pose probleme

    #endif

    ***********************************************************

    Voila; ce code est sens� marcher puisque je l'ai d�ja utilis� � de
    tres nombreuses reprises pour d�vellopper de petits programmes.

    Le hic, c'est que j'ai changer de compilateur pour pouvoir utiliser
    Ogre (un moteur 3D)

    en faisant un simple #include du code ci dessus j'ai le message d'erreur
    suivant:

    "error: expected initializer before '<' token"

    cette erreur ce ratache � la ligne de code:

    "template<class T> T* Singleton<T>::m_Inst = NULL;"


    Je ne sais pas trop comment faire pour r�gler ce probl�me;

    voici le compilo et l'EDI que j'emploi:

    Code::blocks Nightly build

    gcc core 3.4.5
    g++ 3.4.5


    En fait, c'est la configuration d�crite dans le lien suivant
    http://www.ogre3d.org/wiki/index.php/CodeBlocks_MingW_STLPort



    merci d'avance pour vos r�ponses

    @+

  2. #2
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    Sois le bienvenu!
    Le code serait plus lisible si tu ajoutais les balises Code.
    Alors voil�:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #include <iostream>
    #ifndef SINGLETON_H
    #define SINGLETON_H
     
     
    template <class T>
    class Singleton
    {
     
    public :
     
    static T& Instance() // Instanciation & accession de type reference
    {
    if (!m_Inst) m_Inst = new T;
    return *m_Inst;
    }
     
    static T* PtrInstance() // Instanciation & accession de type pointeur
    {
    if (!m_Inst) m_Inst = new T;
    return m_Inst;
    }
     
    static void Destroy() // Liberation des ressources
    {
    delete m_Inst;
    m_Inst = NULL;
    }
     
    protected :
     
    Singleton() {}
     
    ~Singleton() {}
     
    private :
     
    static T* m_Inst; // Instance de la classe
     
    Singleton ( Singleton & ) ; // Supression du constructeur de copie
    void operator = (Singleton &) ; // Supression de la copie
    };
     
    template<class T> T* Singleton<T>::m_Inst = NULL; // ce qui pose probleme
     
    #endif
    Sous Code::Blocks, ce fichier compile sans probl�me...
    A++

    PS: ton probl�me c'est que NULL n'est pas trouv�... Donc j'ai ajout� l'en-t�te <iostream>

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Par d�faut
    Merci beaucoup pour ta r�ponse

    A l'avenir, je ferai attention pour les balises

    En fait, j'ai toujours le meme probl�me......

    J'ai cr�e un autre projet o� je fait un simple include du
    header avec Singleton puis une "Singletonisation" (bon, c'est pas
    tr�s francais comme terme) d'une classe quelconque et la ca
    marche .......

    bref mon impression c'est: ???????

    Je crois que le mieux c'est que je revoie ma facon de configurer
    le projet initial......

  4. #4
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    L'erreur c'est qu'il ne reconna�t pas NULL... es-tu s�r d'avoir inclus tous les headers dont tu as besoin?

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Par d�faut
    Je pense effectivement avoir inclut tous les headers;

    voici ce que j'ai test�

    Projet principal (celui qui utilise ogre)
    avec ou sans le header : "error: expected initializer before '<' token "
    avec "template<class T> T* Singleton<T>::m_Inst = 0;" meme probleme
    avec "#define NULL 0" tout en haut : meme probleme

    Projet test (une petit console simple)
    tous les tests pr�cedents passent sans problemes

    PS: le compilo est r�gl� pareil c'est a dire avec les options (gcc)
    Produce debugging symbols (-g)
    Enable all compiler warning (-Wall)

    je pense que le probl�me doit venir du SDK ogre:
    Celui-ci doit proc�der a des red�finitions ou autre qui me sont cach�es

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Par d�faut
    C'est bon j'ai r�gler le probl�me:
    Effectivement, c' est un coup du SDK de orgre car le probl�me est
    r�solu simplement en changeant l'ordre des includes dans le main

    En fait c'est:
    #include mon_truc_a_moi.h
    #include ExempleApplication_de_Ogre.h

    et plus de problemes.

    En tout cas merci infiniment reggae pour ton aide

    @ bientot

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Probl�me de compilation projet wxwidget sous Code::block
    Par Benoit_T dans le forum wxWidgets
    R�ponses: 1
    Dernier message: 17/02/2011, 14h56
  2. [D�butant] Compiler glu.h sous Code::Blocks
    Par allanp8 dans le forum OpenGL
    R�ponses: 10
    Dernier message: 18/11/2007, 00h56
  3. [Cal3D] Probl�me de compilation avec Cal3D sous windows
    Par nicoenz dans le forum Moteurs 3D
    R�ponses: 2
    Dernier message: 15/11/2006, 09h46
  4. Probl�me pour compiler avec gcc
    Par Mick.Zen dans le forum Autres �diteurs
    R�ponses: 2
    Dernier message: 28/06/2006, 14h05
  5. [d�butant]compiler avec gcc sous linux
    Par Ickou dans le forum Autres �diteurs
    R�ponses: 4
    Dernier message: 10/03/2006, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo