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

Langage C++ Discussion :

Déclaration de classe dans un fichier .cc


Sujet :

Langage C++

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Points : 31
    Points
    31
    Par défaut Déclaration de classe dans un fichier .cc
    Bonjour,

    Je voudrais savoir pourquoi dans certains fichiers .cc il y a des déclarations de classes? Normalement, à ma connaissance une déclaration de classe devait se faire dans un fichier .h.

    Voici un exemple dans le fichier gpsr.cc du protocole GPSR:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    static class GPSRHeaderClass : public PacketHeaderClass{
    public:
      GPSRHeaderClass() : PacketHeaderClass("PacketHeader/gpsr",
    					 sizeof(hdr_all_gpsr)){
        bind_offset(&hdr_gpsr::offset_);
      }
    }class_gpsrhdr;



    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Et pourquoi pas ?
    Ce qui importe c'est uniquement la portée. Si le fichier n'est pas inclus, elle ne sera pas utilisable en dehors du fichier. C'est pas forcément un mal.
    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
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    Le but est toujours le même, depuis que l'on a découvert le principe pour la structure FILE : si on ne veut pas que l'utilisateur ( comprend : le développeur qui utilise une bibliothèque donnée) n'aille fourrer son nez là où ma chatte n'irait pas fourrer son c...l, et, surtout, si on veut éviter qu'il n'aille tripatouiller des données qui ne le concerne pas, on va essaye d'encapsuler au mieux ces données.

    Le problème, c'est qu'en plaçant la structure / la classe dans un fichier d'en-tête, on permet justement à l'utilisateur de savoir "de quoi elle est faite". Du coup, s'il s'agit d'une classe qui n'aura qu'un intérêt "strictement interne" (elle permet, d'une manière ou d'une autre, de "préparer le terrain" pour certaines fonctionnalités, mais on n'a aucune raison de l'utiliser en dehors de quelques cas particuliers), on peut très bien décider de la définir dans un fichier d'implémentation.

    On en profitera d'ailleurs sans doute pour déclarer une variable globale du type de cette classe / de cette structure, mais, comme son utilisation est totalement transparente pour l'utilisateur (il n'y a vraiment que les fonctions implémentée dans le même fichiers qui connaissent cette classe et la variable globale qui va avec), on garde le contrôle intégral de toutes les modifications qu'elle subit
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Heu "static class {}", je connais pour du C++/CLI mais c'est maintenant dans le C++ standard ????

  5. #5
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Ce n'est pas la classe qui est statique, mais l'instance .

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Une classe déclarée comme une structure C ?
    Beurk!!!

  7. #7
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Je ne comprends pas

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Une classe déclarée comme une structure C ?
    Beurk!!!
    Je pense que votre lecture est erronée.
    Je fais moi même ce genre d'erreur .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static class GPSRHeaderClass : public PacketHeaderClass{
    public:
     // ...
    }class_gpsrhdr;
    Oui, on a bien une déclaration de classe, qui s'appelle GPSRHeaderClass qui hérite de PacketHeaderClass. C'est vrai.
    Mais l'ensemble du code, veut dire :
    je veux une instance statique, de la classe GPSRHeaderClass (qui hérite de PacketHeaderClass) que j'appelle (l'instance) class_gpsrhdr.
    En réalité, c'est une définition inline. Elle est directement instanciée, telle qu'elle et ça va pas plus loin.
    Donc, c'est exactement comme faire les deux séparément
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    OK !
    C'est un peu brainfuck pour moi.

    Pour le coup, je garde ma sale habitude plus verbeuse, que je trouve plus claire, (et soluble dans du C++/CLI).

Discussions similaires

  1. [amfPhp] Déclaration de classe dans un package
    Par luta dans le forum Dynamique
    Réponses: 6
    Dernier message: 27/09/2006, 16h37
  2. Réponses: 9
    Dernier message: 25/09/2005, 16h33
  3. Sauvegarder/Lire une classe dans un fichier
    Par Rodrigue dans le forum C++
    Réponses: 10
    Dernier message: 10/09/2005, 14h12
  4. Réponses: 4
    Dernier message: 10/02/2005, 16h10
  5. [C#] [.NET] Lecture d'une classe dans un fichier
    Par niPrM dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2004, 08h57

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