Il y a beaucoup de questions similaires à celles-ci, mais je n'ai pas pu trouver précisément ce que je cherchais. Je suis désolé si c'est un duplicata.
J'ai un i Ensuite, déclarez deux Enfin, j'aimerais avoir une classe qui traite donc je voudrais pouvoir écrire le code suivant: p> En ce moment, je dois faire (ce que je voudrais éviter): p> parent code> classe et deux classes dérivées qui héritent de celle-ci: p>
partagé_ptr code> à la classe de base et instancez-les avec un
partagé_ptr code> à chacune des classes dérivées: p>
partagée_ptr
3 Réponses :
Il n'est pas possible de surcharger de la sorte, vous auriez besoin d'une instruction de commutation pour obtenir quelque chose de similaire avec une expédition dans une méthode sur Peut-être que vous devriez déplacer le processus Director Code>. P>.
processus () code> à la classe code> parent code> (et le remplacer dans
fils code> et
fille Code>), de cette façon, vous pouvez utiliser une résolution de fonction virtuelle normale pour appeler la bonne. p>
Je ne suis pas sûr de savoir s'il y a de meilleures façons d'utiliser habituellement un modèle de visiteur http: // fr. wikipedia.org/wiki/visitor_pattern ou astuces de double envisage similaires sur ce besoin. P>
Vos objets ne connaissent probablement pas le partage_ptr sur eux-mêmes, mais généralement une référence simple fonctionne assez bien. p>
Idéalement, le parent code> fournirait une interface assez riche pour réalisateur code> pour traiter correctement chaque enfant, sans qu'il soit nécessaire de savoir quel enfant il est.
class ProcessSon: public Process, private Son {
public:
void SpecificProc1(shared_ptr<Parent> obj) {
// Make this part of the process based on class Son
}
void SpecificProc2(shared_ptr<Parent> obj) {
// Make this part of the process based on class Son
}
...
};