Forum de la communauté SFML

Aide => Général => Discussion démarrée par: Cmdu76 le Janvier 06, 2014, 04:46:37 pm

Titre: Problème avec les templates...
Posté par: Cmdu76 le Janvier 06, 2014, 04:46:37 pm
Bonjour à tous :)

Je travaille actuellement sur un projet de gestion de States pour SFML

J'ai récemment essayé d'adapté le framework du livre sur la SFML mais le problème était qu'il n'était pas trop possible de faire partager les informations du jeu entre plusieurs states, car le système de Context est propre au framework et donc pas vraiment pratique...

Du coup j'ai voulu implémenter ça avec des templates.

J'ai une petite erreur "undefined reference"...

Je sais pourquoi j'ai cette erreur :
J'ai deux classes et chacune utilise des templates que je déclare donc dans le .hpp de ma classe.
Et chacune des fonctions utilisant des templates à besoin d'inclure l'autre pour travailler avec...

State.hpp :
class StateManager;

class State
{
    template<typename T>
    void send(T object);

    template<typename T>
    void receive(T object);
};

#include "State.inl"
 

State.inl :

template <typename T>
void State::send(T object)
{
    mMgr->share<T>(object);
}

template <typename T>
void State::receive(T object)
{
//
}
 

StateManager.hpp :
class State;

class StateManager
{
    public:
        template <typename T>
        void share(T object);
};

#include "StateManager.inl"
 

StateManager.inl :
template <typename T>
void StateManager::share(T object)
{
    state->receive(object);
}


Voilà je vous ait réduit les fichiers au max, en laissant tout ce qui devrait être utile :)

Si quelqu'un pourrait m'aider ça serait plutôt cool car le projet serait utilisable par tout le monde :)

Le projet est actuellement sur GitHub et c'est la dernière fonctionnalité que je prévois d'ajouter pour le moment

Merci d'avance : https://github.com/Cmdu76/CmState
Titre: Re : Problème avec les templates...
Posté par: Cmdu76 le Janvier 07, 2014, 05:59:56 pm
Finalement le seul moyen qui a été trouvé sur openclassroom,  est de mettre les deux classes dans le même fichier

Voilà si ça peut servir après moi ;)
Titre: Re : Problème avec les templates...
Posté par: Lolilolight le Janvier 08, 2014, 10:31:54 am
Les classes et fonctions templates devraient toujours être définies dans un .h, moi aussi j'ai eu des problèmes d'undefined référence à la compilation avec des templates définis dans un fichier à part.

Surtout que je devais inclure le .cpp et pas le .h dans le main, mais, même en faisant ça, ça ne marchait pas si une autre classe utilisait ma classe template.

(C'est le cas de ma classe Fabrique de mon projet SFGL.)