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

 C++ Discussion :

Héritage et Include


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut Héritage et Include
    Bonjour à tous,

    Un petit problème que je n'arrive pas a résoudre :
    Je m'aide du tuto de Pierre Schwartz : ici

    J'ai des erreurs de compil :
    voici les classes qui posent problème :
    La classe Game composée d'une liste de moteurs Engine (Engine est une classe abstraite)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include "Engine.h"
    class Game
    {
    protected: 
    list<Engine*> lEngine;
    };
    La classe Engine qui se rebelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include "Game.h"
    #include "GameEngine/GameEngine.h"
    //------------------------------------------------------------------------
    class Engine
    {
    public : 
    void hello(){}
    virtual void Frame()=0;//Engine est une classe abstraite
    Engine(class Game* g, bool aEstPassif=0):parent(g),estPassif(aEstPassif){}
    protected :
    Game* parent;
    bool estPassif;
    };
    Et donc une fille de Engine, GameEngine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include "../Engine.h"
    class GameEngine : public Engine
    {
    public : 
    void Frame(){} // implémentation de Frame()
    GameEngine (Game* g,bool estPassif=0 ):Engine(g,estPassif){}
    };
    Lorsque je compile, j'ai :
    "expected `)' before ‘*’ token" qui réfère a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GameEngine (Game* g,bool estPassif=0 ):Engine(g,estPassif){}
    Pour ca je peux éventuellement déclarer class game; avant la définition de la classe GameEngine.
    Le principal problème est l'autre erreur :
    "expected class-name before ‘{’ token " qui réfère à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class GameEngine : public Engine
    {
    Donc je crois comprendre qu'il ne reconnait pas Engine comme une classe. Si je déclare Engine avant, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class Engine;
    class GameEngine : public Engine
    {
    j'ai droit à
    forward declaration of ‘struct Engine’
    plus
    invalid use of incomplete type ‘struct Engine’

    Je ne vois pas du tout comment régler le problème.
    J'ai ommis des include STL, et je n'ai utilisé que GameEngine (même si ya aussi SoundEngine, GuiEngine et ServerEngine qui trainent a coté mais dont l'implémentation est la même pour l'instant (vides sauf definition de Frame(){} et appele au constructeur parent Engine())

    Je peux evidemment rajouter le code complet si nécessaire :-)
    Merci d'avance!

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu as des inclusions cycliques qu'il te faut résoudre en n'incluant pas Game.h dans Engine.h (remplace par une déclaration anticipée : class Game;).

    Tu devrais lire le passage correspondant dans la FAQ, cela t'aidera à savoir quand tu peux utiliser une déclaration anticipée et quand tu ne peux pas

  3. #3
    Invité
    Invité(e)
    Par défaut
    Excellent
    Merci pour la réponse (qui plus est rapide )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Postgresql]Héritage
    Par lheureuxaurelie dans le forum PostgreSQL
    Réponses: 13
    Dernier message: 02/10/2008, 09h18
  2. Héritage et include
    Par Core8 dans le forum C++
    Réponses: 5
    Dernier message: 04/03/2007, 12h08
  3. [Postgres] Héritage + Clés
    Par k-reen dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 21/05/2003, 16h37
  4. #include "math.h" et #include <math.h>
    Par pounka dans le forum C
    Réponses: 4
    Dernier message: 01/05/2003, 21h06
  5. Héritage entre Forms
    Par BarBal dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 17h44

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