Я пищу от класса STFT
. Составляет просто отлично с этим в заголовке:Почему «ошибка: неверное приложение« sizeof »для неполного типа с использованием unique_ptr» исправлено путем добавления пустого деструктора?
class STFT; // pimpl off to prevent point name clash
class Whatever
{
private:
STFT* stft;
и это в реализации:
#include "STFT.h"
Whatever::Whatever() : stft(new STFT()) {
// blah blah
}
Whatever::~Whatever() {
delete stft; // pure evil
}
Однако переход на std::unique_ptr<STFT> stft;
над сырым указателем в заголовке, и удаление деструктор, я получаю
error: invalid application of 'sizeof' to an incomplete type 'STFT' static_assert(sizeof(_Tp) > 0, "default_delete can not delete incomplete type");
Но если я просто поставлю пустой деструктор Whatever::~Whatever(){}
, тогда он компилируется в порядке. Это меня полностью застопорило. Пожалуйста, наполните меня тем, что делает этот бессмысленный деструктор для меня.
Протестировано без ошибок только сейчас:/ – learnvst