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
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
 
Derivee2 d2;
cout << d2.key_;
ca fonctionne et il m'affiche en console:
"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