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 :

Problème de passage de paramètres au constructeur de la classe mère


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 43
    Par défaut Problème de passage de paramètres au constructeur de la classe mère
    Bonjour,

    Je dispose de 2 classes :
    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
    class A{
       private : 
       std::string nom;
       int valeur;
     
       public : 
       A(std::string,int);
    };
     
    class B : public A{
     
       protected :
       static int numero;
     
       public :
       B(std::string nom,int valeur);
       B(int);
    };
    Tout va bien pour le premier constructeur de B, lorsque j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    B::B(std::string nom, int valeur) : A(nom,valeur){...}
    Par contre, je ne vois pas du tout comment faire pour utiliser le second constructeur. En fait, je voudrais qu'un nom par défaut (mais différent à chaque fois) soit attribué, en utilisant la variable static numero.

    En gros, je voudrais passer en argument une string de valeur : "Objet_"+numero

    Le problème qui se pose est que C++ ne fait pas un transtypage automatique de int vers string et je n'arrive pas à voir comment je pourrais faire.

    Je sais que je pourrais utiliser stringstream, mais impossible pour un passage de paramètre direct au constructeur de la classe mère.

    Quelqu'un aurait-il une solution à me proposer ?

    Merci.

    PS : En Java, la manipulation serait plus facile en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public B(int valeur){
       super("Objet_"+numero,valeur);
       numero++;
    }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser une méthode privée convertissant un int en string ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::ostringstream ss;
    ss << "Objet_" << valeur;
    return ss.str();

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 43
    Par défaut
    Oui, mais cela ne me permet pas de passer l'argument au constructeur de la classe mère...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class B : public A {
    private :
        std::string methode(int valeur) {
            std::ostringstream ss;
            ss << "Objet_" << valeur;
            return ss.str();
        }
    public :
        B(int valeur) : A(methode(valeur), valeur) { }
    };
    Où est le problème ??

  5. #5
    Membre averti
    Inscrit en
    Août 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 43
    Par défaut
    Ha d'accord ! Je n'avais pas compris ça comme ça.

    Merci, je vais tester.

  6. #6
    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
    Par défaut
    Citation Envoyé par Idwakest Voir le message
    Où est le problème ??
    Ça appelle une fonction membre sur un objet non encore construit

    D'ailleurs, ce genre de fonction, qui n'est utile qu'à un endroit et ne fait pas vraiment partie de la classe, j'aurais carrément tendance à la sortir de la classe :
    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
    class A{
       private : 
       std::string nom;
       int valeur;
     
       public : 
       A(std::string,int);
    };
     
    class B : public A{
     
       protected :
       static int numero;
     
       public :
       B(std::string nom,int valeur);
       B(int);
    };
    .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    namespace details
    {
      std::string build_a_name(int v_)
      {
            std::ostringstream ss;
            ss << "Objet_" << v_;
            return ss.str();
      }
    }
    B::B(int i_):A(details::build_a_name(i_),i_)
    {}

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 09/06/2006, 10h03
  2. Problème de passage de paramètres à une procedure
    Par momo62 dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 22/12/2005, 15h22
  3. [template] problème de passage de paramètres
    Par vinny_the_true dans le forum C++
    Réponses: 2
    Dernier message: 14/12/2005, 01h15
  4. Réponses: 9
    Dernier message: 13/05/2005, 03h13
  5. problème de passage de paramêtre sous mozilla
    Par mat10000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/09/2004, 10h48

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