Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Problème avec les templates...  (Lu 2164 fois)

0 Membres et 1 Invité sur ce sujet

Cmdu76

  • Full Member
  • ***
  • Messages: 194
    • Voir le profil
Problème avec les templates...
« 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
« Modifié: Janvier 06, 2014, 07:38:00 pm par Cmdu76 »

Cmdu76

  • Full Member
  • ***
  • Messages: 194
    • Voir le profil
Re : Problème avec les templates...
« Réponse #1 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 ;)

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Problème avec les templates...
« Réponse #2 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.)