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 :

Utiliser plusieurs .cpp pour la même classe


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Utiliser plusieurs .cpp pour la même classe
    Bonjour!

    J'ai une classe Jeu qui exécute une partie de code dans Jeu.cpp. Mais le fichier Jeu.cpp est beaucoup trop long, donc j'aimerais créer d'autres fichiers avec la classe Jeu. Donc je crée le fichier Mecanismes.cpp et avec ce code ...

    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
     
    #include "Jeu.h"
     
    void Jeu::movePlayer()
    {
        if (keyLeft)
        {
            joueurItem->setPos(xJoueur-= vitesseJoueur, yJoueur);
        }
        else if (keyRight)
        {
            joueurItem->setPos(xJoueur+= vitesseJoueur, yJoueur);
        }
     
        if (keyUp)
        {
            //Saut
        }
    }
    ...la compilation plante avec ces erreurs :
    -invalid use of incomplete type 'struct QGraphicsPixmapItem'
    -forward declaration of 'struct QGraphicsPixmapItem
    J'ai cherché partout, j'ai créé un topic sur un autre forum également, mais je n'ai pas trouvé la solution de mon problème, et c'est pourquoi je demande votre aide.

    Merci!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 125
    Points : 33 029
    Points
    33 029
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    Tu as parfaitement le droit et la possibilité de scinder l'implémentation en plusieurs fichiers, mais il faut le faire correctement.
    En fait correctement, ça veut dire exactement de la même manière que si tu le faisais en un seul fichier.
    Les forward declaration ne suffisent pas à manipuler un type, sauf un pointeur dont on n'accède jamais à aucun membre.
    Ton message d'erreur signifie juste ça. Pour utiliser un type, il doit être complètement déclaré, et donc il faut le header qui le définit.


    easy way:
    - est-ce que jeu.cpp compilait auparavant ?
    - si oui, recopier les includes suffira
    - si non, prendre le problème à la base
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse.

    Oui, jeu.cpp compilait très bien avant que je transfère la méthode movePlayer().

    Edit: Merci beaucoup, mon problème est résolu.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Citation Envoyé par Waxabee Voir le message
    donc j'aimerais créer d'autres fichiers avec la classe Jeu.
    Rien n'empêche de séparer la définition d'une classe dans plusieurs fichiers.

    Citation Envoyé par Waxabee Voir le message
    Mais le fichier Jeu.cpp est beaucoup trop long
    C'est un indicateur très fort d'un problème de design. La classe Jeu porte trop de responsabilités. Elle mérite probablement d'être ré-architecturée pour mieux répartir les responsabilités ... ce qui fera naturellement désenfler ton fichier...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/06/2014, 20h06
  2. [OpenGL 4.x] VBO et utilisation de plusieurs textures pour un même buffer
    Par benicourt dans le forum OpenGL
    Réponses: 2
    Dernier message: 18/03/2013, 20h09
  3. Plusieurs sources CSS pour la même class
    Par Faiche dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 23/01/2009, 12h11
  4. Réponses: 8
    Dernier message: 16/03/2008, 14h36
  5. [Applet]Utiliser plusieurs Applet dans une même classe
    Par BRAUKRIS dans le forum Applets
    Réponses: 5
    Dernier message: 11/06/2004, 15h27

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