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 :

Où est l'erreur?


Sujet :

C++

  1. #1
    Paulinho
    Invité(e)
    Par défaut Où est l'erreur?
    C'est un exercice. Il y a un erreur dans le code suivant:

    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
    29
    30
    31
    32
    33
    # include <iostream>
     
    using namespace std;
     
    class olympionike {
     
    private: 
        char* nom;
        int annee; // ano dos jogos olímpicos
        int position;
     
    public:
        olympionike() {nom = " "; annee = 0; position = 0;}
        olympionike(char* n, int a, int p)
        {nom = n; annee = a; position = p;}
     
    virtual char* get_nom() const {return nome;}
    virtual int get_annee() const {return ano;}
    virtual int get_position() const {return posicao;}
    virtual void medaille() const {
    	switch (posicao) {
        case 1: { cout << "or"; break;}
        case 2: { cout << "argent"; break;}
        case 3: { cout << "bronze"; break;}
        default: cout << " "; break;}}
    virtual void print() const = 0;        };
     
    int main() {
     
    		olympionike rk("Reinhard Kahle", 2008, 1);
    		rk.print();
     
    };
    Une ligne dans le code est suspect pour moi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    virtual void print() const = 0;        };
    Pourquoi const = 0? print() fait quoi, si on n'a pas "{ cout << "Le nom de l'atlète" << get_nom() << ...};"?

    Bonjour à tous!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Points : 473
    Points
    473
    Par défaut
    La meilleure solution pour répondre à ta question, c'est de rentrer tout ce joli code
    dans un éditeur de texte, et essayer de le compiler.
    Le compilateur te dira lui même où sont les erreurs.

  3. #3
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 887
    Points : 1 531
    Points
    1 531
    Par défaut Re: Où est l'erreur?
    Citation Envoyé par Paulinho
    Pourquoi const = 0?
    Ca veut dire que c'est une méthode virtuelle pure, donc que la classe est abstraite et ne peut pas être instanciée. L'erreur est là.

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    c'est une fonction purement virtuelle. Elle est déclarée mais n'a pas de corps.
    Cela fait de la classe "olympionike" une classe abstraite. Tu ne peux pas instancier des classes abstraites, donc tu dois t'en servir comme base de dérivation pour une de tes classes et au moin donner une définition pour chaque fonction virtuelle de la classe de base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class MyClass : public olympionike
    {
    public:
       virtual void print() { std::cout << "name is " << nom << "\n"; }
    };
    tu peux maintenant instancier MyClass et te servir de toute les fonctionnalités de olympionike.

Discussions similaires

  1. Ou est l'erreur?
    Par JavaAcro dans le forum Langage
    Réponses: 2
    Dernier message: 12/02/2006, 18h59
  2. Réponses: 13
    Dernier message: 30/01/2006, 14h21
  3. [VB.NET] Pagination DataGrid (où est l'erreur?)
    Par franculo_caoulene dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/10/2004, 11h46
  4. Ou est l'erreur ?
    Par Antoine NSG dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/09/2004, 10h56
  5. [Erreur] Quel est cette erreur?
    Par netah25 dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/08/2004, 10h16

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