Digamos que tengo dos clases:Herencia: ¿Función que devuelve el tipo propio?
class A
{
public:
A* Hello()
{
return this;
}
}
class B:public class A
{
public:
B* World()
{
return this;
}
}
Y digamos que tengo una instancia de la clase B
así:
B test;
Si llamo test.World()->Hello()
que funcionaría bien. Pero test.Hello()->World()
no funcionaría ya que Hello()
devuelve A
tipo.
¿Cómo puedo hacer que Hello()
devuelva el tipo de B
? No quiero usar una función virtual
ya que tenemos más de 20 clases diferentes que heredan A
.
20 clases diferentes que heredan A no son tantas. Obtendrá 20 vtbls y un vptr por instancia (suponiendo que el envío virtual se realice de esa manera en su compilador). ¿Estás tan limitado de recursos que esto es realmente un problema? –
Pereza. Al agregar un método dentro de la clase A, debería ir a todas las clases y agregar el mismo método. – Grapes