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 :

Constante statique a la classe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut Constante statique a la classe
    Bonjour,

    Je suis en plein apprentissage sur la programmation c++ et aujourd'hui j'ai un soucis que je vous soumet:
    En effet, j'ai crée une classe Commercial qui hérite de la classe Employé.
    Et 2 autres classes Vendeur et Représentant qui héritent de la classe Commercial et j'ai la méthode double calculer_salaire() const
    Cette méthode doit me retourner:

    Pour le vendeur: (0.2*chiffre d'affaire) + 400
    Pour le représentant: (0.2*chiffre d'affaire) + 800

    Ma question est de savoir comment faire pour ne pas avoir ces valeurs de 400 et 800 en dur(qui correspondent à la majoration). J'ai pensé pour cela a définir une variable statique dans les classes vendeur et représentant:

    Vendeur.hpp:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #ifndef VENDEUR_HPP
    #define VENDEUR_HPP
     
    #include "Commercial.hpp"
    #include <iostream>
    #include <string>
    using namespace std;
     
    class Vendeur : public Commercial {
    public:
    	Vendeur(string nom, string prenom, double age, unsigned int date, double CA)
    		: Commercial(nom, prenom, age, date, CA) {}
    	string get_nom() const;
    	double calculer_salaire();
    	~Vendeur() {}
    private:
    	static double majoration;
    };
     
    #endif
     
     
    double Vendeur::majoration(400);
     
    double Vendeur::calculer_salaire() {
    	return (.2 * chiffre_affaire) + majoration;
    }
    est-ce la bonne façon sachant que je fais la même chose pour la classe Représentant ou alors faut il plutot la définir dans la classe Commercial?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Définis ta valeur comme un membre constant de ta classe Commercial, et initialise là via le constructeur de Commercial.
    Les constructeurs de Vendeur et Représentant (quitte à utiliser du français, tu peux utiliser des accents dans tes noms de classe... ça peut être un sujet d'amusement ) appelleront le constructeur de leur parent en donnant les valeurs littérales (400 et 800).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    Ok mais par contre je pensé qu'on devais utiliser une variable statique pour ce genre de manoeuvre ou cela n'est pas utile?

  4. #4
    Membre émérite Avatar de SkyZoThreaD
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2013
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 585
    Par défaut
    Le seul problème de la variable statique dans ton cas c'est que ça revient au même que de mettre la valeur "en dur" dans le code

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    Ok donc je doit definir une classe de ce type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    class Commercial{
    public:
    Commercial(........, const int var) : ......., var(var) {}
    .......
    protected:
    const int var;
     
    };

  6. #6
    Membre émérite Avatar de SkyZoThreaD
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2013
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 585
    Par défaut
    Pour moi c'est ok.

Discussions similaires

  1. [Tableaux] Probleme variable statique dans une classe
    Par Joe Le Mort dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2006, 11h35
  2. Réponses: 9
    Dernier message: 15/03/2006, 08h58
  3. Créer une liste d'objets statiques dans une classe
    Par crossbowman dans le forum C++
    Réponses: 3
    Dernier message: 13/03/2006, 09h11
  4. Membres statiques d'une classe et erreur de linkage
    Par Neilos dans le forum C++Builder
    Réponses: 10
    Dernier message: 09/02/2006, 23h06
  5. membre statique dans une classe
    Par motrin dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/12/2005, 15h15

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