首页 > 解决方案 > 有没有办法使成员函数不能从构造函数调用?

问题描述

我有使用的成员函数(方法)

std::enable_shared_from_this::weak_from_this() 

简而言之:weak_from_this回到thisweak_ptr。一个警告是它不能从构造函数中使用。如果有人从继承类的构造函数中使用我的函数,则在其中会返回 expired 。我通过断言检查它没有过期来防止这种情况发生,但它是一个运行时检查。weak_from_thisweak_ptr

有没有办法在编译时检查它?

标签: c++constructorc++17shared-ptrweak-ptr

解决方案


恐怕答案是“不,不可能在编译时防止这种情况发生。” 总是很难证明是否定的,但请考虑一下:如果可以以这种方式保护函数,那么它可能已经在标准库本身中weak_from_this完成了。shared_from_this


推荐阅读