Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/10/2014, 12:45
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Llamar metodos de la clase hija al crear objeto de la clase madre

No estás haciendo las cosas bien.

La idea de tirar de herencia y polimorfismo es que se puedan usar diferentes tipos de objetos sin importar su origen concreto.

En tu caso, lo lógico sería que la función "ecuacion" tuviese un método virtual llamado "calcular", que devolviese un double y no recibiese parámetros... en la clase "ecuacion" este método debería ser virtual puro, sin embargo, las diferentes ecuaciones que heredasen de "ecuacion" deben implementar este método para realizar cada una el cálculo que le corresponda:

Código C++:
Ver original
  1. class Ecuacion
  2. {
  3.   public:
  4.  
  5.     virtual double calcular( double x ) const =0;
  6. };
  7.  
  8. class EcuacionLineal : public Ecuacion
  9. {
  10.   public:
  11.  
  12.     virtual double calcular( double x) const override
  13.     {
  14.       return getA()*x+getB();
  15.     }
  16. };
  17.  
  18. int main( )
  19. {
  20.   Ecuacion* ecuacion = new EcuacionLineal( );
  21.   ecuacion->setA( 10.0 );
  22.   ecuacion->setB( 12.5 );
  23.  
  24.   std::cout<< ecuacion->calcular( 3.5 );
  25. }

Si en un diseño se da el caso de que necesitas conocer el tipo concreto de clase hija en la clase padre, entonces es que estás haciendo mal las cosas.

PD.: "override" es una palabra clave nueva en el estándar C++11 si tu compilador no la soporta puedes quitarla sin ningún problema... su cometido es dar un error de compilación si la función en cuestión no sobreescribe la función de una clase padre.

Un saludo.