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 :

Classes et variables membres


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 199
    Points : 37
    Points
    37
    Par défaut Classes et variables membres
    Je me permet de vous poser une derniere question qui est sans rapport avec celle initialement posé , mais je ne vais pas ouvrir un post pour si peux .
    Je debute dans l'utilisation des class .
    Dois je declarer TOUS mes variables dans le .hpp ou peux t on aussi en declarer dans le main au fur et a mesure de nos besoins ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    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 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Je ne vois aucun sujet pré-existant.
    Je vais donc me baser que sur ce message.

    Le terme "variable" est extrêmement vague.

    Dans les .hpp, on ne fait, généralement (=>exception des inlines et template), que des déclarations, pas de définitions.
    Et encore, que les déclarations qui nécessite d'être connues par plusieurs unités de compilation (.cpp).

    Mais je ne vois aucun cas de "variables" nécessitant une déclaration dans des .hpp, à part si vous considérez que les champs de classes comme des "variables".

    Utiliser une variable dans plusieurs unités de compilation (.cpp), cela s'approche beaucoup des variables globales, qu'il faut éviter comme la peste.

    Donc, pouvoir faire plein de conneries qui passe à la compilation, c'est possible (mais bon le linker va vous en mettre plein les dents, généralement), mais est-ce raisonnable de les utiliser, je ne crois pas.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 199
    Points : 37
    Points
    37
    Par défaut
    Merci de votre reponse .

    Je ne maitrise pas encore tous les termes adéquat , donc merci de votre indulgence . Je pensais aux attributs ou "variable menbres" que l'on declare en private dans le fichier header.

    Doit on declarer toutes les variables dont on va avoir besoin des le depart dans ce fichier , ou peux t on encore declarer des variables dans le fichier main par exemple ?
    C'est un peu encore confus dans ma petite tete .

  4. #4
    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 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Si tu faisais l'essai tu le saurais rapidement. Le compilateur va directement t'insulter d'erreurs.
    Une classe ça définit ses variables membres. En C++ tu ne peux pas ajouter de variables membres à la volée.
    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.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 199
    Points : 37
    Points
    37
    Par défaut
    Ok bien compris .

    Par contre mes autres variables ( autres que les variables menbres ) ,qui me permettent de faire mes switch , if et compagnie , je peux les declarer a la volée dans le main ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    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 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Cette dénomination de "variables membres", ça me casse les couil..., c'est autant des variables que des champs d'une structure en C ou que d'un record en Pascal, c'en n'est pas!!! ; bien que c'est une dénomination "admise", c'est un truc qui induit en erreur les débutants.

    Les champs d'une classe font partie, malheureusement, de la déclaration d'une classe, même ceux déclarés en privé, car, pour pouvoir compiler d'autres module de compilation (.cpp) qui se servent de cette classe, le compilateur doit connaitre ces détails internes sur la classe.
    Je dis malheureusement, car, si on suit les préceptes de l'encapsulation de la programmation objet, l'utilisateur de la classe ne devrait avoir accès qu'à l'interface public de la classe (son API).
    C'est les nécessités d'implémentation des compilateurs qui font que cette entorse à la POO "pure" est faite en C++.

    Doit on declarer toutes les variables dont on va avoir besoin des le depart dans ce fichier ,
    De quel fichier parlez-vous ?
    - Un .hpp, donc un fichier qui ne devrait faire que des déclarations.
    - Un .cpp, qui ne peut que faire de déclaration de variable interne au module de compilation et les définitions/initialisations de ces variables internes (en plus des définitions des fonctions libres et des fonctions membres)?

    Je vous déconseille vivement les variables internes à un module de compilation, ainsi que ceux qui ne sont plus interne, c'est des variables globales qu'il faut éviter comme la peste.

    ou peux t on encore declarer des variables dans le fichier main par exemple ?
    Un "fichier main", ça veut rien dire. Vous voulez dire "le fichier contenant la fonction libre 'main'" comme point d'entrée de mon programme, peut-être ?
    Si c'est le cas, ce qui est déclaré à l'extérieur de toutes fonctions ou de toutes classes, c'est des variables internes au module de compilation 'totomain.cpp' (si le fichier contenant la fonction main est dans un fichier de nom 'totomain.cpp').
    Comme déjà indiqué, ce type de variables est à éviter.
    Sinon, les variables déclarées dans des fonctions, sont des variables locales au bloc où elle est déclarée, donc pas forcément à la fonction entière.
    Une variable déclaré/définie dans la fonction "main" est locale au cette fonction.
    Pour éviter de se faire des nœuds au cerveau on s’arrange pour que ces variables locales ne soit définit que dans le bloc où elles sont utiles pour qu'il n'y est pas de collision de nom de variable et qu'elles aient des noms parlant dans périmètre/bloc où elles sont utilisées.

    Vous devriez maintenant vous rendre compte qu'un champ d'une classe/instance et une variable locale à une fonction ne s'utilisent absolument pas de la même manière donc ne se déclarent pas de la même manière (et n'ont pas les mêmes "contraintes" de déclaration)

    P.S.: Cette réponse ne tient pas compte de votre précédente réponse qui n'était pas visible au moment sa rédaction, mais je pense avoir répondu pro-activement à vos interrogations.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 199
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup pour tous ces éclaircissements . A travers vos explications , vous avez répondus a tous mes questionnements .

    Merci a tous pour votre générosité .

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

Discussions similaires

  1. Fonctions et variables membre d'une classe
    Par dida_plt dans le forum Débuter
    Réponses: 1
    Dernier message: 20/03/2012, 16h21
  2. Réponses: 10
    Dernier message: 20/03/2009, 10h39
  3. variable membre et class
    Par barbarello dans le forum Débuter
    Réponses: 9
    Dernier message: 30/10/2008, 08h44
  4. [POO] Classe abstraite PHP5 et variables membres
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 07/06/2006, 01h27
  5. Réponses: 6
    Dernier message: 06/10/2004, 12h59

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