当前位置: 首页 > news >正文

std::shared_from_this注意事项:exception bad_weak_ptr

1.不可以在构造函数中调用shared_from_this()
因为它的实现是:

    _LIBCPP_INLINE_VISIBILITYshared_ptr<_Tp> shared_from_this(){return shared_ptr<_Tp>(__weak_this_);}

也就是它依赖的__weak_this_此时还未创建完成。

2.一定要public继承

class MyType : public std::enable_shared_from_this<MyType> {
}

以macOS平台的实现为例:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/usr/include/c++/v1/__memory/shared_ptr.h

shared_ptr的构造过程,需要调用__enable_weak_this()初始化__weak_this_
__enable_weak_this的实现,会根据类型的可见性,利用模板特化了不同的实现。

正确的实现:

    template <class _Yp, class _OrigPtr, class = __enable_if_t<is_convertible<_OrigPtr*, const enable_shared_from_this<_Yp>*>::value> >_LIBCPP_HIDE_FROM_ABIvoid __enable_weak_this(const enable_shared_from_this<_Yp>* __e, _OrigPtr* __ptr) _NOEXCEPT{typedef __remove_cv_t<_Yp> _RawYp;if (__e && __e->__weak_this_.expired()){__e->__weak_this_ = shared_ptr<_RawYp>(*this,const_cast<_RawYp*>(static_cast<const _Yp*>(__ptr)));}}

空实现:

    _LIBCPP_HIDE_FROM_ABI void __enable_weak_this(...) _NOEXCEPT { }

可见性不符合时,无法正确创建出__weak_this_。此时使用std::enable_shared_from_this<T>便失去了意义。

相关文章:

std::shared_from_this注意事项:exception bad_weak_ptr

1.不可以在构造函数中调用shared_from_this() 因为它的实现是&#xff1a; _LIBCPP_INLINE_VISIBILITYshared_ptr<_Tp> shared_from_this(){return shared_ptr<_Tp>(__weak_this_);}也就是它依赖的__weak_this_此时还未创建完成。 2.一定要public继承 class MyTy…...

【工具】Raycast – Mac提效工具

引入 以前看到同事们锁屏的时候&#xff0c;不知按了什么键&#xff0c;直接调出这个框&#xff0c;然后输入lock屏幕就锁了。 跟我习惯的按Mac开机键不大一样。个人觉得还是蛮炫酷的&#xff5e; 调研 但是由于之前比较繁忙&#xff0c;这件事其实都忘的差不多了&#xff0…...

蓝桥杯集训·每日一题2024 (二分,双指针)

前言&#xff1a; 开学了&#xff0c;平时学习的压力也逐渐大起来了&#xff0c;不过还算可以接受&#xff0c;等到后面阶段考的时候就不一样了&#xff0c;我目前为了转专业退选了很多课&#xff0c;这些课我都需要花时间来刷绩点&#xff0c;不然保研就没有竞争力了。我自己会…...

在Linux(Ubuntu)中使用终端编译 vscode安装

文章目录 &#x1f4da;在Linux&#xff08;Ubuntu&#xff09;中使用终端编译&#x1f407;.cpp程序编译&#x1f407;.py程序编译&#x1f407;查看Python、C编程环境 &#x1f4da;vscode安装 &#x1f4da;在Linux&#xff08;Ubuntu&#xff09;中使用终端编译 虚拟机安装…...

官网正在被哪些产品蚕食,定制网站又被哪些建站产品挤占。

2023-12-09 16:22贝格前端工场 官网建设是一个被大多数人看衰的市场&#xff0c;本文来理性分析下&#xff0c;谁在蚕食这个市场&#xff0c;谁又在挤占这个产品生存空间&#xff0c;欢迎大家评论&#xff0c;探讨。 网站正在被以下产品形式取代&#xff1a; 1. 移动应用&…...

BUUCTF---[MRCTF2020]你传你呢1

1.题目描述 2.打开题目链接 3.上传shell.jpg文件&#xff0c;显示连接成功&#xff0c;但是用蚁剑连接却连接不上。shell文件内容为 <script languagephp>eval($_REQUEST[cmd]);</script>4.用bp抓包&#xff0c;修改属性 5.需要上传一个.htaccess的文件来把jpg后缀…...

vite+vue3门户网站菜单栏动态路由控制

门户网站用户端需要分板块展示&#xff0c;板块内容由管理端配置&#xff0c;包括板块名称&#xff0c;访问路径&#xff0c;路由组件&#xff0c;展示顺序&#xff0c;是否展示。如下图所示&#xff1a; 用户访问门户网站时&#xff0c;展示菜单跳转通过板块配置&#xff0c;动…...

【C语言】linux内核packet_setsockopt

一、中文注释 // 发送数据包函数。它尝试通过特定的网络设备队列直接传输一个skb&#xff08;socket缓冲区&#xff09;。 static int packet_direct_xmit(struct sk_buff *skb) {return dev_direct_xmit(skb, packet_pick_tx_queue(skb)); // 调用dev_direct_xmit函数&#x…...

LeetCode的使用方法

LeetCode的使用方法 一、LeetCode是什么&#xff1f;1.LeetCode简介2.LeetCode官网 二、LeetCode的使用方法1.注册账号2.力扣社区力扣编辑器 2.1 讨论发起讨论参与讨论关注讨论 2.2 文章撰写文章关注文章 3.力扣面试官版测评面试招聘竞赛 4.力扣学习LeetBook 书架我的阅读猜您喜…...

Vue事件处理:.passive修饰符与应用场景

.passive修饰符 passive这个修饰符会执行默认方法。你们可能会问&#xff0c;明明默认执行为什么会设置这样一个修饰符。这就要说一下这个修饰符的本意了。 浏览器只有等内核线程执行到事件监听器对应的JavaScript代码时&#xff0c;才能知道内部是否会调用preventDefa…...

智慧城市中的数字孪生:构建城市管理的未来框架

目录 一、引言 二、数字孪生技术概述 三、数字孪生技术在智慧城市中的应用 1、实时监测与预警 2、模拟与优化 3、智能化决策 4、协同与共享 四、数字孪生技术构建城市管理的未来框架的价值 1、提高管理效率 2、优化资源配置 3、提升公共服务水平 4、增强应对突发事…...

强引用、软引用、弱引用、幻象引用 —— Java的四种引用类型解析

强引用、软引用、弱引用、幻象引用 —— Java的四种引用类型解析 在Java中&#xff0c;对象的生命周期并不总是由我们直接控制。除了我们常见的强引用外&#xff0c;Java还提供了软引用、弱引用和幻象引用这三种引用类型&#xff0c;它们对对象生命周期的影响各不相同。理解这…...

基于禁忌搜索算法(TS)的TSP(Python实现)

本篇文章是博主在最化优学习、人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在最优化算…...

Linux shell 网络掩码地址转CIDR

例子&#xff1a; ./1.sh 255.255.255.0 ./1.sh 255.255.255.128 ./1.sh 255.255.0.0 源实现&#xff1a; #!/bin/bashnetmask_to_cidr() {local IFSlocal -a octetslocal i0local cidr0IFS. read -r -a octets <<< "$1"for octet in "${octets[]}…...

C#,煎饼排序问题(Pancake Sorting Problem)算法与源代码

1 煎饼排序问题 给定一个未排序的数组&#xff0c;任务是对给定数组进行排序。您只能在阵列上执行以下操作。 翻转&#xff08;arr&#xff0c;i&#xff09;&#xff1a;将数组从0反转为i 示例&#xff1a; 输入&#xff1a;arr[]{23、10、20、11、12、6、7} 输出&#xff1a…...

13.西瓜书——半监督学习

1.概述 &#xff08;1&#xff09; 纯半监督学习 (Pure Semi-Supervised Learning) 纯半监督学习是一种典型的半监督学习方法&#xff0c;它的主要特点是同时利用有标签数据和无标签数据进行模型训练。目标是通过整合这两种类型的数据来提高模型的泛化性能。在这个过程中&#…...

C++进阶之路---继承(二)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、继承与友元 友元关系不能继承&#xff0c;也就是说基类友元不能访问子类私有和保护成员。 class Student; class Per…...

C及C++每日练习(3)

选择题&#xff1a; 1.以下程序的输出结果是&#xff08;&#xff09; #include <stdio.h> main() { char a[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p; int i; i 8; p a i; printf("%s\n", p - 3); } A.6 B. 6789 C. 6 D.789 对于本题&#xff0…...

黑马点评-附近商户实现

GEO数据结构 Redis在3.2版本中加入了对GEO的支持&#xff0c;允许存储地理坐标信息&#xff0c;根据经纬度来检索数据。 GEO本质上是基于sortedSet实现的&#xff0c;在Sorted Set中&#xff0c;每个成员都是与一个分数(score)相关联的&#xff0c;这个分数用于对成员进行排序…...

安装nginx:手动安装和yum安装

本文在centos7.9下分别尝试了yum安装和手动安装&#xff0c;记录一下试验过程。为后来者少踩点坑。 下载 下载地址&#xff1a;链接 。建议下载稳定版本&#xff0c;也就是Stable Version&#xff0c;这里下载的是 nginx-1.24.0 # 我下载在如下文件夹 mkdir/opt/apps cd /op…...

小程序富文本渲染难题如何解决?mp-html组件实战指南

小程序富文本渲染难题如何解决&#xff1f;mp-html组件实战指南 【免费下载链接】mp-html 小程序富文本组件&#xff0c;支持渲染和编辑 html&#xff0c;支持在微信、QQ、百度、支付宝、头条和 uni-app 平台使用 项目地址: https://gitcode.com/gh_mirrors/mp/mp-html …...

考完CDGP后,我整理了这份DAMA数据治理实战避坑指南(附学习路线)

考完CDGP后&#xff0c;我整理了这份DAMA数据治理实战避坑指南&#xff08;附学习路线&#xff09; 去年夏天通过CDGP认证后&#xff0c;我接手了公司首个全流程数据治理项目。本以为凭借DAMA知识体系可以游刃有余&#xff0c;却在落地过程中踩遍了理论与实践之间的"断层坑…...

【数据集】OCO碳卫星数据概述:数据概述及下载

目录 OCO-2 第11版模型互比项目MIP 一、OCO-2 v11 MIP 数据类型概览 二、输入数据(Input Files) 三、重要说明 OCO碳卫星概述 OCO-2 vs OCO-3 比较 参考 OCO-2 第11版模型互比项目MIP 在 NOAA 全球监测实验室 OCO-2 v11 MIP 数据下载页面 上,用户可以获取 OCO-2 第11版模型…...

Qt5/6项目实战:告别中文乱码,从编辑器设置到源码编码的完整避坑指南

Qt5/6中文编码实战&#xff1a;从源码到编译器的全链路避坑手册 第一次在Qt项目中看到满屏的"锟斤拷"时&#xff0c;我盯着屏幕愣了三分钟。这不是简单的技术问题&#xff0c;而是跨平台开发中字符编码的"百慕大三角"——编译器、IDE、操作系统和Qt版本在这…...

【Docker 27网络策略终极指南】:27项生产级策略配置、隔离与审计实战(附策略合规检查清单)

第一章&#xff1a;Docker 27网络策略演进与核心架构解析Docker 27&#xff08;代号“Nexus”&#xff09;标志着容器网络模型的一次范式跃迁&#xff0c;其网络策略体系不再仅围绕桥接、主机与覆盖网络的静态划分&#xff0c;而是以零信任原则为基底&#xff0c;将策略执行点下…...

4大案例分析避坑指南,Tiktok新手卖家必看!

一、四大视频广告成功案例1、VTT按摩仪VTT来自深圳龙华&#xff0c;在国内是年销超15亿的成熟品牌&#xff0c;但2025年3月进军TikTok Shop东南亚时也是“小学生”。他们一开始就组建了自己的拍摄与剪辑团队&#xff0c;采用“大力出奇迹”的打法——日均产出300条短视频&#…...

WinUtil:Windows系统优化与软件管理的终极解决方案

WinUtil&#xff1a;Windows系统优化与软件管理的终极解决方案 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否曾经为Windows系统的繁琐…...

告别漂移轨迹!用Valhalla的HMM地图匹配API,5分钟搞定车辆轨迹纠偏

5分钟实战&#xff1a;用Valhalla的HMM算法实现高精度车辆轨迹纠偏 当物流调度系统显示某辆货车正在珠江中央"行驶"&#xff0c;或是共享单车轨迹在建筑物间"穿墙而过"&#xff0c;这些令人啼笑皆非的GPS漂移现象背后&#xff0c;是每个轨迹数据处理工程师…...

机房上网被锁?从极域网络限制原理到实战绕过(附键盘解锁思路)

机房网络限制的底层原理与实用绕过方案 当你在学校机房打开浏览器&#xff0c;却发现所有社交、游戏网站都被屏蔽&#xff1b;当你想用快捷键调出任务管理器&#xff0c;却发现键盘被锁死——这种无力感想必许多人都经历过。机房管理软件通过一系列技术手段实现这些限制&#x…...

Vue转React神器:想用Vue写React?试试VuReact

前言 你有没有过这种时刻&#xff1a;你热爱 Vue 的组合式 API 和 <script setup> 的心智模型&#xff0c;但项目却因为生态或团队原因必须使用 React。代码能写&#xff0c;但写得别扭&#xff0c;改得难受&#xff0c;每写一行都像在生硬地跨框架翻译。 两种框架思维…...