no save
Assistance
Achat
News

Forum | programmation
[C++] difficultés de programmation & héritage
mamiemando, le lun. 01 janv. 2007 à 23:55:32
C'est assez bizarre comme manière de faire, normalement on fait plutôt des liens dynamiques avec du virtual et tout le bastringue si on a une instance de la classe mère pour retomber sur la bonne classe fille.

Quoi qu'il en soit si tu peux déterminer la classe à partir d'une valeur stockée dans un chaine tu peux t'en sortir avec un dynamic_cast ou un static_cast.

#include <iostream>
#include <string>
#include <cassert>

class a_t{
protected:
std::string machaine;

public:
a_t(const std::string & machaine0="b1"):
machaine(machaine0)
{
assert(machaine=="b1" || machaine=="b2");
}

inline const std::string & get_machaine() const{
return machaine;
}
};

class b1_t : public class a_t{
public:
b1_t(){}

inline void f() const {
std::cout << "b1" << std::endl;
}
};

class b2_t : public class a_t{
public:
b2_t(){}

inline void f() const {
std::cout << "b2" << std::endl;
}
};

void mafonction(a_t & x){
if(x.get_machaine() == "b1"){
const b1_t & x_cast = std::static_cast<b1_t>(x);
x_cast.f();
}else if(x.get_machaine() == "b1"){
const b2_t & x_cast = std::static_cast<b2_t>(x);
x_cast.f();
}
}
Bone j'ai pas testé mais je pense que ça doit marcher, ou quelque chose dans ce goût là, je te laisser chercher...

Bonne chance
Précédenthelpme76
déc. 06
helpme76
janv. 07
Suivant
REPONSES
mamiemando
janv. 07
helpme76
janv. 07
Char Snipeur
janv. 07
helpme76
janv. 07
helpme76
janv. 07
helpme76
janv. 07
mamiemando
janv. 07
Char Snipeur
janv. 07
helpme76
janv. 07
mamiemando
janv. 07
Version Web
Réalisé par RedShift
no save