Salut � tous,
voici les classes suivantes:
"test1.h"
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 #pragma once #include <string> #include <iostream> #include <sstream> using namespace std; class Base{ public: std::string key_; std::string baseDes_; Base(); virtual void createKey(); void addClassNameToKey(); }; class Derivee1: public Base{ public: std::string derivee1Des_; Derivee1(); void createKey(); }; class Derivee2:public Derivee1{ public: std::string derivee2Des_; Derivee2(); void createKey(); };
et voici le cpp
test1.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
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 #include "Test1.h" void Base::addClassNameToKey(){ ostringstream os; os << typeid(*this).name() ; os << "||"; string s = os.str() ; key_ = s + key_; } void Base::createKey(){ addClassNameToKey(); ostringstream os; os << baseDes_; os << "||"; key_ += os.str(); } void Derivee1::createKey(){ addClassNameToKey(); ostringstream os; os << derivee1Des_; os << "||"; key_ += os.str(); } void Derivee2::createKey(){ addClassNameToKey(); ostringstream os; os << derivee2Des_; os << "||"; key_ += os.str(); } Base::Base(): baseDes_("Ceci est la caract de la classe Base") { createKey(); } Derivee1::Derivee1(): Base(), derivee1Des_("Ceci est la caract de la classe Derivee1"){ createKey(); } Derivee2::Derivee2(): Derivee1(), derivee2Des_("Ceci est la caract de la classe Derivee2"){ createKey(); }
Lorsque je fais appel � la ligne suivante dans le main.cpp
ca fonctionne et il m'affiche en console:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 Derivee2 d2; cout << d2.key_;
"class Derivee2||class Derivee1||class Base||Ceci est la caract de la classe Base||Ceci est la caract de la classe Derivee1||Ceci est la caract de la classe Derivee2||"
or ce que je voudrais c'est que pour une classe fille du type d�riv�e 2, il remonte jusque la base me chercher toutes les valeurs (en l'occurence BAseDes dans Base et Derivee1Des dans Derivee1, puis qu'il me cherche les infos de la classe o� il est (c�d deriv�e2) et qu'il m'affiche le nom de la classe o� il est (c�d class Derivee2) � l'aide de typeid.name()...
Donc je voudrais �a comme output
"class Derivee2||Ceci est la caract de la classe Base||Ceci est la caract de la classe Derivee1||Ceci est la caract de la classe Derivee2||"
au lieu de
"class Derivee2||class Derivee1||class Base||Ceci est la caract de la classe Base||Ceci est la caract de la classe Derivee1||Ceci est la caract de la classe Derivee2||"
Notez la subtilit� :-)
J'ail l'impression qu'il s'agit d'une sorte d'aller retour dans les classes h�rit�es:
D�riv�e2---> Derivee1 ---> Base --->Deriv�e2
mais bon vu que ca marche pas...
Si vous voyez...?? pcq moi je vois pas
Merci
Partager