Bonjour,
tout d'abord désolé, je ne suis pas encore habitué à la terminologie exacte du coup mon titre ne correspond peut être pas tout à fait à mon problème. et ça me pose aussi un problème pour questionner notre meilleur ami commun.
comme promis je reviens vous embêter. je progresse doucement mais sûrement dans mon apprentissage mais je bloque sur un point.
Voici mon code:
Pour résumer un peu mon problème:
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94 #include <iostream> #include <map> #include <string> using namespace std; class Item { public: Item(int id) : id(id) { } int get_id() { return id; } void set_id(int newid) { id=newid; } private: int id; }; class NamedItem : public Item { public: NamedItem(int id,string name) : Item(id), name(name) { } string get_name() { return name; } void set_name(string newname) { name=newname; } private: string name; }; class Items { public: Items() { } void add(Item* item) { int id=item->get_id(); dict[id]=item; } void add(Item& item) { add(&item); } Item* get(int id) { return dict[id]; } private: map<int,Item*> dict; }; class NamedItems : public Items { public: NamedItems() : Items() { } //NamedItem* get(int id) //{ // //comment redéfinir Items::get pour avoir un NamedItem* en résultat ? //} };
- j'ai défini une classe Item et une classe NamedItem qui dérive de Item.
- j'ai défini une classe Items qui est un "conteneur" d'Item et une classe NamedItems qui dérive de Items et qui est un "conteneur" de NamedItem.
- lorsque j'utilise la méthode add de NamedItems (qui est en fait celle de sa classe mère Items) je donne un objet de type NamedItem* en argument et cela fonctionne car NamedItem dérive de Item (ça c'est si j'ai bien tout compris)
- j'ai défini une méthode get dans Items qui revoie un Item*.
- j'aimerais surdéfinir cette fonction dans la classe NamedItems afin qu'elle renvoit un NamedItem* et je ne sais pas comment faire. Et le vrai problème c'est que je ne sais pas si j'ai ce problème parce que j'ai mal conçu le biniou ou si c'est parce qu'un concept POO m'échappe encore ?
- sans surdéfinir cette fonction, elle me renvoit un Item* sur lequel je peux effectuer des méthodes liées à la classe Item mais pas les méthodes liées à la classe NamedItem.
J'espère avoir expliqué suffisamment clairement mon problème.
Merci pour votre aide![]()
Partager