Я получаю эту ошибку при компиляции → не могу объявить поле M1:: sc абстрактным типом I1, потому что следующие виртуальные функции чисты в I1. Пожалуйста, помогите.
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);
};
Полный код можно найти на http://pastebin.com/PFrMTJuF.