Problème de polymorphisme
Bonjour !
Faisons court, faisons simple : J'aurais voulu faire quelque chose comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| // partie API
class A {
};
class B : public A {
public:
void doFunc () { cout << "bla" << endl; }
};
// partie Programmeur
void func (A& var) {
var.doFunc();
}
int main () {
/* ici pour test, en fait func est appelée par la partie API via un pointeur de fonction. */
B var;
func(var);
} |
Pour que ce code compile je pourrais écrire le prototype de doFunc en virtual dans A. Mais ça, je ne le peux pas. En effet mes contraintes sont les suivantes:
- La classe de base A ne peut pas connaître le contenu des classes filles comme B.
- la signature de la fonction func doit être unique.
Un reinterpret_cast<B&>(e) est possible mais ce serait plutôt mal pratique à mon goût (puisque dans la partie Programmeur), je voudrais que la conversion soit transparente à l'utilisateur.
Et je travaille en C++2011
Je trouve dommage que le polymorphisme se limite aux méthodes qui sont déclarées dans le parent, à vrai dire je trouve ça tellement limité que je me demande s'il y a anguille sous roche ? :?
Merci ;)