Пытаюсь наследоваться от виртуального класса, компилятор выдает следующую ошибку:
/home/anton/dev/techno_park/geo_index_service/test8/main.cpp:96: неопределённая ссылка на «ICashTable<int, int>::~ICashTable()»
Как это исправить?
#include <map>
template <class Key, class Val>
class ICashTable{
public:
virtual ~ICashTable() = 0;
};
template <class Key, class Val>
class CashTableMap : ICashTable<Key, Val>{
private:
std::map<Key, Val> map;
public:
CashTableMap() = default;
~CashTableMap() = default;
};
Что происход при удалении обьекта класса CashTableMap
?
CashTableMap
ICashTable
В базовом классе деструктор обьявлен как чисто вирутальная функция. Но тела у неё нет. Вот и получается ссылка на функцию без реализации. Запомните: если деструктор чисто виртуальный, то у него всё равно должно быть тело, которое программа сможет выполнить.
Кстати, это относится к любым чисто виртуальным функциям. Если функция чисто виртуальная, то это не значит что у неё не может быть тела. Может. И Вы можете вызывать её в функциях производного класса.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть класс Patient и два вектора, которые содержат экземпляры этого класса, patients и newPatientsЯ хочу объединить их в один вектор fullListOfPatients с помощью...
Всем приветЯ для тренировки решил сделать справочный сайт со статьями