Объявить и реализовать чистый виртуальный деструктор в одну строку?

Я делаю чистый виртуальный деструктор, чтобы заставить класс быть абстрактным, который не содержит методов, кроме ctor. Я делаю это только для реализации заголовка

struct abstractSchema
{
abstractSchema(...): ... { ... }
virtual ~abstractSchema() = 0;
};
inline abstractSchema::~abstractSchema(){}

Есть ли синтаксический сахар, как (незаконный) virtual ~abstractSchema(){} = 0; что позволило бы мне объявить и определить в одной строке, а не разделять определение и реализацию, как в приведенном выше примере?

0

Решение

Это так близко, как вы можете получить:

struct abstractSchema
{
virtual ~abstractSchema(){}
protected: abstractSchema(...): ... { ... }
};

Он не абстрактный, но сам по себе не может быть создан, поэтому может удовлетворить ваши потребности.

3

Другие решения

Вы можете:

struct abstractSchema
{
virtual ~abstractSchema() = 0 {}
};

Не уверен насчет стандартных совместимых компиляторов, но MSVC (2010) компилирует этот код просто отлично.

-1

По вопросам рекламы [email protected]