Bonjour,
j'aurais quelques petites question techniques sur le c++ et la gestion des objets:
Code d'exemple:
Code C++ : 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 class A { public: A() { cout << "A::A\n" << endl; toto(); } virtual void toto() { cout << "A::toto\n" << endl; } }; class B : public A { public: B() : A() { cout << "B::B\n" << endl; } void toto() { cout << "B::toto\n" << endl; } void titi() {} };
- tout d'abord je voulais avoir confirmation que :
donne:
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part B *b = new B();
et pourquoi pas "B::toto" ???
Code Console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 A::A A::toto B::B
- Comment je peux faire pour comparer le type dynamique de deux instances ?
j'ai essayé typeid, mais ca prend le type qui est "static" :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 A *a = new A(); B *b = new B(); if (typeid(a).name() == typeid((A*)b).name()) cout << "comparaison des type static" << endl;
- je voudrais tester si une methode existe dans un obj, mais si possible de facon opti (pas de comparaison de string ou autre...)
par exemple :
??
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 A *a = new A(); B *b = new B(); A *list[] = {a, b}; for (int i = 0; i < sizeof(list) / sizeof(*list); i++) if (/* ((B*)(list[i]))->titi exists */) ((B*)(list[i]))->titi();
merci d'avance pour vos reponses.
Partager