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++/CLI Discussion :

héritage


Sujet :

C++/CLI

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 53
    Par défaut héritage
    alors voilà j'aimerais afficher la valeur du Point mais je n'y arrive pas =/
    pourtant j'ai bien ma méthode getPoint();

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #include <string.h>
    #include <iostream>
    using namespace std;
     
     
    class Point{
    private:
    	int point;
    public:
    	Point(int p){
    		point = p;
    		cout << "Point construit " << endl;
    	}
    	~Point(){
    		cout << "Point Détruit " << endl;
    	}
    	void print() const {
    	cout << "Point X : " << point << endl;
    	}
    	int getPoint(){
    		return point;
    	}
    };
     
    class MultiPoint: public Point{
    private:
    	string nom;
    public:
    	MultiPoint(int p,string name):Point(p){
    		nom = name;
    	}
     
    	MultiPoint(const MultiPoint& p):Point(p){
    		cout<<"+++ Constructeur de recopie MultiPoint"<<endl;
    	}
     
        void print() const
        {
           cout << "MultiPoint" << getPoint() << endl;
        }
    };
     
     
      int main()
      {
        // Point P(3);
         Point *MP;
         MP =  new MultiPoint(5,"plouf");
         MP->print();
         delete MP;
         return 0;
      } // end main
    merci pour votre aide.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Première chose, ce code ne compile pas car tu utilises getPoint dans une fonction const (print) alors que getPoint n'est pas const. Avant de poster un message, assure-toi que ton code compile.

    Ensuite, ton problème vient du fait que print n'est pas virtuel. Pour plus d'explications sur la virtualité, tu peux regarder la FAQ.

    http://cpp.developpez.com/faq/cpp/?p...isme_inclusion
    http://cpp.developpez.com/faq/cpp/?p...LASS_abstraite

    Le destructeur doit aussi être virtuel. Voir aussi la FAQ.
    http://cpp.developpez.com/faq/cpp/?p...UCTEUR_virtuel

    Voici ma proposition de réécriture avec en commentaire les changements.
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #include <string>    // remplace string.h par string
    #include <iostream>
     
    using namespace std;
     
    class Point{
    private:
      int point;
    public:
      Point(int p){
        point = p;
        cout << "Point construit " << endl;
      }
      virtual ~Point(){ // Le destructeur doit aussi etre virtuel.
        cout << "Point Détruit " << endl;
      }
      virtual void print() const { // print doit etre virtuel
        cout << "Point X : " << point << endl;
      }
      int getPoint() const{ // getPoint doit etre const
        return point;
      }
    };
     
    class MultiPoint: public Point{
    private:
      string nom;
    public:
      MultiPoint(int p,string name):Point(p){
        nom = name;
      }
      MultiPoint(const MultiPoint& p):Point(p){
        cout<<"+++ Constructeur de recopie MultiPoint"<<endl;
      }
      void print() const {
        cout << "MultiPoint" << getPoint() << endl;
      }
    };
     
    int main() {
      Point *MP =  new MultiPoint(5,"plouf");
      MP->print();
      delete MP;
      return 0;
    }
    Pour terminer, ton problème n'avait aucun rapport avec Visual. Le forum C++ aurait été plus approprié.

Discussions similaires

  1. [Postgresql]Héritage
    Par lheureuxaurelie dans le forum PostgreSQL
    Réponses: 13
    Dernier message: 02/10/2008, 09h18
  2. [Héritage] Vos commentaires....
    Par Fyna dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 03/05/2005, 22h10
  3. [XML Schemas]héritage multiple
    Par nicolas_jf dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/06/2003, 12h55
  4. [Postgres] Héritage + Clés
    Par k-reen dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 21/05/2003, 16h37
  5. Héritage entre Forms
    Par BarBal dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 17h44

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