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 Console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
A::A
A::toto
B::B
et pourquoi pas "B::toto" ???

- 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.