Bonjour à tous,
je me retrouve dans cette situation :
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 class Base { int m_a; virtual void f() = 0; }; class Derivee1 : public Base { void f(); int m_data; }; class Derivee2 : public Base { void f(); int m_size; }; class Type { Base* m_p; int m_id; ... }; class Test { list<Type*> m_list; Derivee1* GetPtrByIdType(int idType); };
La liste m_list de la classe Test est construite avec des Type* dont le m_p est un Derivee1*.
Ainsi, pour récupérer le m_p, j'utilise la fonction :
Comment faire pour que dans ma fonction GetPtrByIdType() je n'ai pas de downcasting à faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Derivee1* Test::GetPtrByIdType(int idType);
En effet ma recherche par id me retourne un Base* que je dois caster en Derivee1*.
Je ne trouve pas ça trés propre.
Quelle est la solution à conseiller ?
@+
Partager