Мой вопрос очень похож на другой, но немного другой. У меня есть пример кода:
class B1 {
private :
int * ptr;
public:
B1() : a{ 1 } { ptr = new int{ 2 }; }
B1(const B1& other) : a{ other.a } { ptr = new int{ *other.ptr }; }
~B1() { delete ptr; }
int a;
virtual void smthing() = 0;
};
class D : B1 {
public:
D(int i) : B1{} {}
D(const D& a) : B1{ a } {}
void smthing() { return; };
};
int main() {
D d { 3 };
D dd { d };
return 0;
}
Я использую vs2015, и этот код работает, но выдает ошибку: объект абстрактного класса типа "B1" не разрешен ...
Если я удаляю эту строку D(const D& a) : B1{ a } {}
, вызывается конструктор копирования базового класса, и нет никаких проблем, но если мне нужен конструктор копирования производного класса, как я могу заставить эту работу работать без ошибок?
Спасибо за ответ!