У меня есть проект для домашних животных, с которым я экспериментирую с новыми функциями С++ 11. Хотя у меня есть опыт работы с C, я довольно новичок в С++. Чтобы тренироваться в лучших практиках (помимо чтения много), я включил некоторые строгие параметры компилятора (используя GCC 4.4.1):
-std=c++0x -Werror -Wall -Winline -Weffc++ -pedantic-errors
Это отлично работает для меня. До сих пор я смог решить все препятствия. Однако мне нужно enable_shared_from_this
, и это вызывает у меня проблемы. Я получаю следующее предупреждение (ошибка, в моем случае) при компиляции моего кода (возможно, вызванный -Weffc++
):
base class ‘class std::enable_shared_from_this<Package>’ has a non-virtual destructor
В основном, я немного искажен этой реализацией enable_shared_from_this
, потому что:
- Деструктор класса, который предназначен для подкласса, всегда должен быть виртуальным, IMHO.
- Деструктор пуст, зачем он вообще?
- Я не могу представить, чтобы кто-то захотел удалить свой экземпляр ссылкой
enable_shared_from_this
.
Но я ищу способы справиться с этим, так что мой вопрос в самом деле, есть ли подходящий способ справиться с этим? И: Правильно ли я полагаю, что этот деструктор фиктивный, или есть реальная цель?