c++ - 有没有办法使成员函数不能从构造函数调用?
问题描述
我有使用的成员函数(方法)
std::enable_shared_from_this::weak_from_this()
简而言之:weak_from_this
回到thisweak_ptr
。一个警告是它不能从构造函数中使用。如果有人从继承类的构造函数中使用我的函数,则在其中会返回 expired 。我通过断言检查它没有过期来防止这种情况发生,但它是一个运行时检查。weak_from_this
weak_ptr
有没有办法在编译时检查它?
解决方案
恐怕答案是“不,不可能在编译时防止这种情况发生。” 总是很难证明是否定的,但请考虑一下:如果可以以这种方式保护函数,那么它可能已经在标准库本身中weak_from_this
完成了。shared_from_this
推荐阅读
- angular - 将应用程序更新到 Angular 7 后如何更改 HttpClient 代码
- c# - C# 删除树视图中重复的子/孙/曾孙节点
- android-sqlite - POJO和多个表中的房间数据库处理继承
- php - 生成相同订单号的问题
- typescript - 异步函数或方法的返回类型必须是全局 Promise
类型 - c# - 在泛型函数中将类作为参数传递
- google-apps-script - Google App 脚本:无法保留前导零,因为它已被自动删除
- ruby-on-rails - Rails 5 - 理解新动作和渲染错误
- java - 如何解决android baab超时错误?
- linux - 在 grep 之后在同一行中打印 awk 输出