El siguiente fragmento de código produce un error:C++ error de parámetro clase abstracta solución
#include <iostream>
using namespace std;
class A
{
public:
virtual void print() = 0;
};
void test(A x) // ERROR: Abstract class cannot be a parameter type
{
cout << "Hello" << endl;
}
¿Hay una solución/solución para este error otra/mejor que la sustitución de
virtual void print() = 0;
con
virtual void print() = { }
EDITAR: Quiero poder pasar cualquier clase que extienda/implemente la clase base A como parámetro utilizando poly morfismo (es decir A* x = new B() ; test(x);
)
Saludos
Por definición, la clase Abstarct no debe crearse una instancia por sí misma. Sus métodos deben ser reemplazados por las clases derivadas. Solo curiosidad, ¿qué estás tratando de lograr haciendo esto? – Mahesh
Quiero hacer algo como A x = new B() y aprobar cualquier clase que extienda/implemente A. Debería haber especificado la pregunta mejor, supongo. – Cemre
Antes de tratar de encontrar una solución/solución debemos entender el problema. La idea de pasar una clase abstracta como un parámetro "por valor" no tiene ningún sentido. ¿Que estás tratando de hacer? – AnT