Hay muchas preguntas SO que son similares a esto, pero no pude encontrar exactamente lo que estaba buscando. Lo siento si esto es un duplicado.C++ Sobrecarga de una función basada en shared_ptr Clase derivada
tengo una clase Parent
y dos clases derivadas que heredan de ella:
class Son : public Parent { ... };
class Daughter : public Parent { ... };
entonces declarar dos shared_ptr
a la clase base, y crear instancias de ellos con una shared_ptr
a cada una de las clases derivadas:
shared_ptr<Parent> son = shared_ptr<Son>(new Son());
shared_ptr<Parent> daughter = shared_ptr<Daughter>(new Daughter());
Por último, me gustaría tener una clase que procese shared_ptr<Parent>
en función de a cuál de las clases derivadas apunte. Puede funcionar utilizo sobrecarga para lograr este efecto es la pregunta: ¿
class Director {
public:
void process(shared_ptr<Son> son);
void process(shared_ptr<Daughter> daughter);
...
};
así que me gustaría ser capaz de escribir el siguiente código:
shared_ptr<Parent> son = shared_ptr<Son>(new Son());
shared_ptr<Parent> daughter = shared_ptr<Daughter>(new Daughter());
Director director;
director.process(son);
director.process(daughter);
En este momento estoy teniendo que hacer (que me gustaría evitar):
director.process_son(boost::shared_polymorphic_downcast<Son>(son));
director.process_daughter(boost::shared_polymorphic_downcast<Daughter>(daughter));