Форум программистов, компьютерный форум CyberForum.ru

В дочерних классах компилятор сообщает об Undefined reference to pure virtual functions - C++

Восстановить пароль Регистрация
 
relationer
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
25.08.2014, 15:55     В дочерних классах компилятор сообщает об Undefined reference to pure virtual functions #1
Здравствуйте!

Имеется базовый класс с чисто виртуальным деструктором (virtual ~Service() = 0).
Однако в дочерних классах мне компилятор сообщает об undefined reference to ...::~Service(). Service (шаблон) целиком объявлен и реализован в hpp файле.

Как это понимать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2014, 15:55     В дочерних классах компилятор сообщает об Undefined reference to pure virtual functions
Посмотрите здесь:

C++ undefined reference...
C++ undefined reference
C++ Про перегрузку функции и Virtual в классах
C++ Использование полей и методов в дочерних классах
Undefined reference to C++
C++ R6025 pure virtual function call при вызове метода, реализованного в дочернем классе
C++ R6025 pure virtual function call
C++ Pure virtual function definition (C++11)
Protected abstract virtual base pure virtual private destructor C++
Компилятор сообщает об отсутствии точки с запятой в строке int main() { C++
C++ Undefined reference to
C++ Pure virtual function call (не видит переопределенный метод)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7933 / 4715 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
25.08.2014, 15:56     В дочерних классах компилятор сообщает об Undefined reference to pure virtual functions #2
relationer, У чисто-виртуального деструктора обязана быть реализация, если объекты производного класса создаются.
Добавляем реализацию после класса

C++
1
2
template<typename T>
Base<T>::~Base() {}
и все ок.
relationer
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
25.08.2014, 15:58  [ТС]     В дочерних классах компилятор сообщает об Undefined reference to pure virtual functions #3
Т. е. сделать его "нечистым"?
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7933 / 4715 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
25.08.2014, 15:59     В дочерних классах компилятор сообщает об Undefined reference to pure virtual functions #4
relationer, Да нет. Можно и чистым оставить. Просто реализация обязана быть.
Хотя pure-specifier в данном случае бессмысленен, раз есть реализация.
John Prick
755 / 688 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
25.08.2014, 16:00     В дочерних классах компилятор сообщает об Undefined reference to pure virtual functions #5
C++
1
virtual ~Service() {} = 0
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7933 / 4715 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
25.08.2014, 16:02     В дочерних классах компилятор сообщает об Undefined reference to pure virtual functions #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
John Prick, Некорректный синтаксис. Ну и вцелом:
A function declaration cannot provide both a pure-specifier and a definition
По поводу pure и реализации:
A destructor can be declared virtual (10.3) or pure virtual (10.4); if any objects of that class or any
derived class are created in the program, the destructor shall be defined.
Yandex
Объявления
25.08.2014, 16:02     В дочерних классах компилятор сообщает об Undefined reference to pure virtual functions
Ответ Создать тему
Опции темы

Текущее время: 01:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru