Ваш базовый класс имеет:
virtual int* BSort() const=0;
virtual void getdata() const=0;
Но ваш производный класс имеет:
int* BSort();
void getdata();
Повторять ключевое слово virtual
необязательно, но без const
это отдельные функции, , не связанные с виртуальными базовыми функциями .
В результате эти чистые виртуальные функции остаются не переопределенными в производном классе, и поэтому imSort
(глупое имя для типа, если вы спросите меня) по-прежнему абстрактно.
Ваше фиксированное определение производного класса таково:
class imSort : public Sort {
private:
int i, j, num;
int temp;
int* a;
public:
imSort();
int* BSort() const; // <--- const
void getdata() const; // <--- const
}; // <--- ;
(Обратите внимание, как отступ улучшает читаемость вашего кода? И вы забыли ;
в конце определения вашего класса.)
Пожалуйста, напишите полностью сформированный вопрос в следующий раз и уменьшите свою проблему до минимального теста.