Правильное размещение для чистого виртуального деструктора по умолчанию в C++11

У меня есть интерфейсный класс, но я хочу, чтобы все производные классы реализовали виртуальный деструктор:

// Interface.h
class Interface {
    virtual ~Interface() = 0;
};

Interface::~Interface() = default;

Проблема в том, что в этом случае у меня ошибка компоновщика из-за дублированных символов.

Я могу поместить определение в .cpp файл, но я хотел бы знать, есть ли более элегантное решение?

1 ответ

Решение

Вы можете добавить встроенный ранее. Согласно http://en.cppreference.com/w/cpp/language/destructor этот синтаксис в порядке:

decl-specifier-seq(optional) ~ class_name () = default;

decl-specifier-seq  -   friend, inline, virtual, or nothing (no return type) 
Другие вопросы по тегам