Recibo este error en la compilación -> no puedo declarar que el campo M1 :: sc es del tipo abstracto I1 porque las siguientes funciones virtuales son puras dentro de I1. Por favor ayuda.C++: No se puede declarar que el campo sea de tipo abstracto
class I1
{
public:
virtual void a(int dir) = 0;
virtual void b() = 0;
virtual void c() = 0;
void a(int dir) {
....
}
void b() {
....
}
void c() {
....
}
};
class I2 : public I1
{
public:
void a(int dir) {
....
}
void b() {
....
}
void c() {
....
}
};
class M1 : public G1
{
protected:
I1 sc;
public:
int dir = 4;
sc.a(dir);
};
El código completo se puede encontrar en http://pastebin.com/PFrMTJuF.
¿qué representa el sc_? ¿Puedo usarlo así como así? – user522767
@user, 'sc_' es un parámetro constructor, necesario para crear una instancia de' M1'. En mi ejemplo, debe apuntar a una instancia de una clase concreta derivada de 'I1' y proporcionar una implementación de' a() ',' b() 'y' c() '. P.ej. una instancia de 'I2' funcionaría. –
¿Puedo enviarle mi código? Soy nuevo en C++ y realmente no puedo describir todo porque tengo un par de archivos en mi proyecto que están vinculados entre sí. – user522767