gpt4 book ai didi

c++ - 为什么 "error: invalid application of ' sizeof' 为使用 unique_ptr 的不完整类型”通过添加空析构函数来修复?

转载 作者:可可西里 更新时间:2023-11-01 17:31:05 27 4
gpt4 key购买 nike

<分区>

我在类里面拉皮条STFT .在 header 中用这个编译就好了:

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;在 header 中的原始指针上,并删除析构函数,我得到

error: invalid application of 'sizeof' to an incomplete type 'STFT' static_assert(sizeof(_Tp) > 0, "default_delete can not delete incomplete type");

但如果我只是提供一个空的析构函数 Whatever::~Whatever(){} ,然后编译正常。这让我完全难住了。请告诉我这个无意义的析构函数为我做了什么。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com