草庐IT

C++智能指针之unique_ptr

全部标签

c++ - 有没有办法在不创建变量的情况下调用需要指针的函数?

我有这个函数调用:uint32_tfunc(uint32_t*a,uint32_tb)我想用这样的整数文字来调用它:func(0,b);其中b是一个uint32_t。有没有什么方法可以在不创建中间变量的情况下做到这一点?IE。我想避免这样做:uint32_ta=0;func(a,b); 最佳答案 辅助类:structint_ptr{intv;operatorint*(){return&v;}};intfoo(int*a,intb);voidbar(){foo(int_ptr{0},0);}这会导致构造一个临时int_ptr类,将其v

c++ - 删除静态 vector 中的唯一类对象指针

假设我们创建一个名为Window的简单类,并希望使用std::unique_ptrvector跟踪我们拥有的所有窗口:#include#includeclassWindow{public:staticstd::vector>MemberPointers;private:intwidth;intheight;};我们在这个类的构造函数中分配一个指向创建对象的指针。根据BjarneStroustrup的“C++之旅”,std::unique_ptr在超出范围时会被释放,就像常规局部变量一样。这是否意味着,在此类的解构器中,我不需要调用任何东西来删除指向该对象的vector元素?如果不是,我

c++ - 通过 unique_ptr 和自定义删除器使用自动扣除

我目前正在使用一个C库,该库定义了许多数据类型,所有这些类型都需要由用户管理它们的生命周期。有许多函数以这种方式定义:int*create(){returnnewint();}voiddestroy(int*i){deletei;}其中大部分在创建后不需要访问。他们只需要存在。因此,我尝试使用在我需要它们存在的范围内声明的unique_ptr来管理它们。这样的声明是这样的://NotethatI'mavoidingwritingthetype'snamemanually.autoa=std::unique_ptr,decltype(&destroy)>{create(),&destro

c++ - 为什么这个悬空的 std::weak_ptr 不会导致 SEGFAULT?

这个问题在这里已经有了答案:Whendoesinvokingamemberfunctiononanullinstanceresultinundefinedbehavior?(2个答案)关闭4年前。在下面的代码中,我在范围内创建了一个shared_ptr并将其分配给一个weak_ptr。为什么在运行代码时我没有得到SEGFAULT,因为wp应该在范围之外无效,对吧?namespace{structDummy{intx;voidfoo(){std::coutwp;{autosp=std::make_shared();wp=sp;}wp.lock()->foo();};

c++ - 指向 std::invoke 中成员函数对象的指针

为什么std::invoke不能使用指向成员的指针,而成员是带参数的函数对象?像这样:structMyClass{std::functionfunctor{[](intarg){printf("%d\n",arg);}};};intmain(){MyClassmc;std::invoke(&MyClass::functor,mc,110);}打印:'std::invoke':nomatchingoverloadedfunctionfound.我在VisualC++和g++中检查了这一点。此外,std::is_invocable_v声称此仿函数不可调用,这绝对是错误的。我是否遗漏了什么或

c++ - 为什么 "this"指针用于调用派生成员函数?

在this上阅读关于虚函数的教程(与本例无关)链接,我找到了这段代码。classWeapon{public:voidfeatures(){coutWeapon::features();cout类Weapon派生自类Bomb,其中调用了Weapon的成员函数。为什么使用“this”指针调用函数Weapon::features()?这不是已经隐式给出了吗? 最佳答案 this是隐式给出的,是否显式编写通常是风格问题。在您的情况下,我会说它不会提高可读性。然而,在其他情况下,显式写入this是有意义的,甚至是必要的为了避免局部变量和数据成

c++ - 当通过 FFI 从 Rust 调用时,您如何使用返回 shared_ptr<T> 的 C++ 函数?

C++shared_ptrcreate_foo();使用rustextern"C"{pubfncreate_foo()->???;}Bindgen将shared_ptr变成不透明的blob。我不能只使用原始指针,因为这样C++代码就不知道我有一个对Foo的引用,并且可能会调用它的解构函数。 最佳答案 std::shared_ptr是一个C++类和一个非平凡的类型,不能按原样从库中导出——您需要它在目标语言中的定义符合C++中的定义.要使用FFI,您需要为您的库函数提供一个简单的CABI(C++ABI不稳定,可能会在编译器版本之间发生

c++ - 动态分配 std::unique_ptr 有什么用?

使用new创建一个std::unique_ptr是否有意义?在下面的代码片段中,我怀疑std::unique_ptr管理的SimpleClass对象不会被销毁,除非我删除std::unique_ptr我自己。我想不出它在什么情况下有用,所以我想知道是否存在实际使用它的情况。std::unique_ptr*ptr_to_unique_ptr=newstd::unique_ptr();ptr_to_unique_ptr->reset(newvector_test::SimpleClass(555));deleteptr_to_unique_ptr; 最佳答案

嵌入式毕设分享 基于单片机的智能音响设计与实现 -物联网 嵌入式 stm32

文章目录0前言1简介2主要器件3实现效果4设计原理4.1PAJ7620U2模块4.2HC-05蓝牙模块4.3JQ8900语音模块5部分核心代码6最后0前言🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是🚩基于单片机的智能音响设计与实现🥇学长这里给一个题目综合评分(每项满分5分)难度系数:4分工作量:4分创新点:3分1简介本项目是基于STM32单片机设计的智能音响系统,可用手机客户端控制音频文件的

一起玩儿物联网人工智能小车(ESP32)——63 SD和TF卡模块的使用

摘要:本文介绍SD和TF卡模块的使用方法前面介绍了非易失性存储的使用方法,由于空间和本身只支持键值对的限制,非易失性存储只适用于少量数据的记录。而不适用于各种声音、图片、大量数据等情况的使用。这时候就需要有文件系统或者更大容量存储空间的支持。SD卡(SecureDigitalMemoryCard)和TF卡(Trans-flashCard,也叫MicroSD卡)就是扩展存储空间的不错的选择,因为这两种卡都支持SPI模式,也就是可以通过SPI通信协议直接访问,因此这两种卡成了很多移动设备扩展存储空间的不二选择。SD卡通常有两种工作模式:SDIO模式和SPI模式。其实这也是两种通信协议,也就是说SD