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 :

Instanciation de classe en C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2024
    Messages : 3
    Par défaut Instanciation de classe en C++
    Je débute avec la programmation POO en C++, on me demande d'implémenter une classe*qui ne pourrait pas être instanciée sans un nom de type std::string.
    J'avoue que là, je suis un peu perdu sur comment je dois le faire.
    Merci d'avance .

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 554
    Par défaut
    Bonjour,

    Ce n'est pas très clair. S'agit-il de déclarer et dériver une classe abstraite ? Peut-on avoir l'énoncé exact (et original) de ton problème ?

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2024
    Messages : 3
    Par défaut
    Voici l'énoncé exacte sur l'image ci-dessous.
    Images attachées Images attachées  

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 554
    Par défaut
    D'accord, il s'agit d'une classe « Élève » et comme l'instancier revient à représenter un élève donné en mémoire, on attend d'elle qu'elle contienne le minimum d'information nécessaires à identifier un individu, donc en l'occurrence le nom de l'élève.

    Hors contexte, on avait du mal à savoir où ils voulaient en venir, surtout si c'est à l'intention des débutants. S'ils comptaient dès le départ te faire écrire une classe template, ça aurait déjà été velu, s'ils avaient trouvé un moyen efficace de faire de l'introspection, c'est moi que ça aurait intéressé.

    Je pense que ta classe doit tout simplement contenir un membre « name » de type std::string, donc ici :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Student {
     
        public:
        std::string name;
     
    };

    … et pour qu'il soit nécessaire de le renseigner, il te faut un constructeur qui accepte une chaîne de type std::string en argument et qui s'en servent pour affecter ce nom au champ name. Tu écris alors ce constructeur et aucun autre pour le moment (en particulier, pas de constructeur par défaut), si bien qu'il sera effectivement nécessaire de passer ce nom à l'instanciation en l'absence de toute autre méthode de construction.

    On reste volontairement flou ici s'il s'agit d'un exercice car tu dois avoir les billes pour le faire. Dans le cas contraire, on développera un peu plus.

    Bon courage.

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 311
    Par défaut
    Je comprends que la classe ne doit pas avoir de constructeur par défaut.

    Je ne suis pas habitué à ce qu'on mette en avant cette contrainte dans des exos d'initiation. C'est plus souvent une conséquence due à un autre choix. Même s'il est vrai que c'est un choix de conception pertinent.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    747
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 96
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 747
    Par défaut
    Salut,

    Arf, Obsidian est parti trop vite, il a laissé ses meilleurs joueurs sur le banc de touche: private et const.
    On comprend bien la notion de snippet, mais quelqu'un qui débute peut y voir une mesure incitative, du coup, on les fait participer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Student {
        public:
        //...
        private:
        const std::string name;  
    }
    Et si ça a été enseigné, il conviendra aussi de s'interroger si le constructeur doit être spécifié explicit et s'il doit être défini en dehors de sa classe.

    Citation Envoyé par Luc Hermitte Voir le message
    Je ne suis pas habitué à ce qu'on mette en avant cette contrainte dans des exos d'initiation.
    C'est mieux, quitte à relaxer plus tard et comprendre pourquoi, que l'inverse.

  7. #7
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2024
    Messages : 3
    Par défaut
    Merci beaucoup pour votre aide, je vais suivre cette piste puis je verrai les retours de la moulinette.
    Encore une fois merci.

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

Discussions similaires

  1. [JAR]Instancier une classe d'un jar
    Par Foub dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 16/08/2005, 16h10
  2. Réponses: 3
    Dernier message: 13/08/2005, 16h18
  3. [MFC] où instancier mes classes?
    Par giova_fr dans le forum MFC
    Réponses: 3
    Dernier message: 26/07/2005, 14h15
  4. [Débutant(e)]Instancier une classe connaissant son nom (String)
    Par Invité dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 17/06/2005, 12h05
  5. [Débutant(e)]servlet qui instancie une classe personelle
    Par NiBicUs dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 08/02/2005, 13h00

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