probleme de comparaison de type d'objets derivés [c++] - C++ - Programmation
Marsh Posté le 24-04-2004 à 02:47:05
return (BlocNAME*)temp;
return (BlocFAMC*)temp;
- une fonction n'a qu'un seul type de retour
- ces transtypages sont ceux du C !
utilise dynamic_cast :
Code :
|
Marsh Posté le 24-04-2004 à 11:22:05
BlackGoddess a écrit :
|
Quelle est la différence entre ton écriture et un simple :
Code :
|
Marsh Posté le 24-04-2004 à 11:22:48
bof. autant tirer parti aux maximun d'une petit feature à la con donc l'histoire est longue
Code :
|
Marsh Posté le 24-04-2004 à 11:23:54
enidan a écrit : Quelle est la différence entre ton écriture et un simple :
|
size() renvoie un type entier non signé de type exact size_type.
1) donc int peut poser problème
2) int peut te faire un warning
3) on me dit que c'est sensé faire du meilleur code asm
Marsh Posté le 24-04-2004 à 01:23:46
Salut,
bon voila, j'ai une petite fonction qui m'embete un peu.
voici une idée du code :
...
for (int x = 0 ; x < v.size(); x++){
Bloc* temp = v[x];
if (ident == "NAME" ){
if (typeid(temp) == typeid(BlocNAME)) return (BlocNAME*)temp;
}
if (ident == "FAMC" ){
if (typeid(temp) == typeid(BlocFAMC)) return (BlocFAMC*)temp;
}
...
le probleme se situe a la comparaison, les objets BlocNAME & BlocFAMC dérivent tous les deux de l'objet Bloc. L'objet temp récuperé peut être un BlocNAME, un BlocFAMC,etc .Cependant, lorsque c'est le cas, la comparaison echoue. Le compilo compare un objet de type Bloc avec un objet de type BlocNAME(/ou BlocFAMC) et par conséquent ne les trouve jamais du même type.
--> Comment tester dynamiquement le type d'un objet dérivé ???
Merci d'avance.