Bonjour,
Je suis les cours de C++ : http://cpp.developpez.com/cours/polyCpp/#LIV-I-2

Je compile sur Code::Blocks ce code :

.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 IV-I-2_HeaderFile
#define IV-I-2_HeaderFile
 
class Animal {
    virtual void uneFonction() { // il faut au moins une fonction virtuelle
     // (car il faut des classes polymorphes)
    }
};
 
class Mammifere : public Animal {
};
 
class Chien : public Mammifere {
 
};
 
class Caniche : public Chien {
 
};
 
class Chat : public Mammifere {
 
};
 
class Reverbere {
 
};
#endif
.cpp

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
/*  Utilisation de typeid*/
#include <iostream>
#include <conio.h> // Permet d'utiliser getch()
#include <typeinfo>
#include "IV-I-2.hpp"
 
using namespace std;
 
int main() {
    Animal *ptr = new Caniche;
 
    cout << typeid(ptr).name() << '\n';
    cout << typeid(*ptr).name() << '\n';
    cout << "L'animal pointe par ptr "
   << (typeid(*ptr) == typeid(Chien) ? "est" : "n'est pas")
   << " un chien\n";
    cout << "L'animal pointe par ptr est un "
   << typeid(*ptr).name() << "\n";
    return getch();
}
et j'ai pour rendu ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
P6Animal
7Caniche
L'animal pointe par ptr n'est pas un chien
L'animal pointe par ptr est un 7Caniche
au lieu d'avoir cela :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Animal *
Chien
L'animal pointé par ptr n'est pas un chien
L'animal pointé par ptr est un Caniche
Please tell me why...