该类std::enable_shared_from_this
是一个(模板)mixin,推荐用于从给定对象(或其地址)创建共享指针,它们都具有对象的共同所有权。
问题是,如果你有一个 T 类:
- 有虚方法
- 继承自
std::enable_shared_from_this<T>
(并且继承必须是公开的,如上面的链接中所述;否则 mixin 是无用的) - 使用 GCC 编译
-Wnon-virtual-dtor
(也许还有 clang,我不确定)
您会收到有关std::enable_shared_from_this
.
我的问题是 - 这里的错误在哪里?那是...
- 应该
std::enable_shared_from_this
有一个虚拟析构函数吗?(我不这么认为) - 非虚拟析构函数警告是否应该使用一些标准来确定它何时发出(如果完全启用,那就是)?
- 应该保护析构函数
std::enable_shared_from_this
吗?(这甚至会起作用吗?) - 带有这个 mixin 的类应该根本没有虚拟方法吗?
我很困惑。