草庐IT

C++智能指针之unique_ptr

全部标签

c++ - 为什么 GCC 给我一个错误 : no unique final overrider?

在下面的代码中,我收到以下警告和错误:test.cpp:15:warning:directbase'B'inaccessiblein'D'duetoambiguitytest.cpp:15:error:nouniquefinaloverriderfor'virtualvoidA::f()'in'D'但是如果我从A中移除B的虚拟继承(即structB:publicA),我只会得到警告,没有错误。structA{virtualvoidf()=0;};structB:publicvirtualA{voidf(){}};classC:publicB{};structD:publicC,virt

c++ - QT Creator 和使用智能指针完成奇怪的代码

我正在使用qtcreator(2.8.1),使用智能指针时出现一些奇怪的行为。看看这个片段:classmyclass{public:voidtest(){};};....std::shared_ptrfoo(newmyclass);foo->test();std::unique_ptrbar(newmyclass);bar->test();如果我键入“foo->”,代码完成窗口会弹出,但如果我键入“bar->”,则什么也不会发生。知道为什么代码补全只适用于shared_ptrs而不适用于unique_ptrs吗?更新:知道我正在使用带有CMake和add_definitions(-st

c# - 将 C++ 代码(使用指针和位移)转换为 C#

我目前正在参与一个将C++代码移植到C#代码的项目,但有些片段并不容易一对一移植,如下所示:#defineCMND_MOVEL10#defineCMND_EXTRASIDE0x80charCmndBuffer[32];int*dst;dst=(int*)&CmndBuffer[0];*dst=0;*dst|=(CMND_MOVEL+(Flags=0){if(sendto(UdpCmdSocket,(constchar*)CmndBuffer,28,0,(structsockaddr*)&UdpCmdPeer,sizeof(UdpCmdPeer))!=SOCKET_ERROR){//mo

C++11 std::promise 从线程返回 std::string,数据指针看起来已复制未移动

我开始使用C++11标准和内置线程。根据我在获得future值时收集到的信息,它是使用移动运算符完成的,将所有权从原始对象中移走(就像旧的auto_ptr曾经在赋值时所做的那样)。我通过在线程期间打印出std::string对象内的char数组的指针并在main中接收到它后打印指针来测试这一点。但是,指针不同。如果有人能告诉我为什么他们在这个简单的代码中不同以及代码必须是什么样子才能使它们相等,我将不胜感激:#include#include#include#include#include#include#include#includeusingnamespacestd;voidthrf

c++ - 为什么 list<unique_ptr> 中的 unique_ptr 的 std::move() 没有真正 move 它?

usingPtr=std::unique_ptr;Ptrf(boolarg){std::listlist;Ptrptr(newint(1));list.push_back(std::move(ptr));if(arg){Ptr&&obj1=std::move(list.front());//Here|obj1|and|list.front()|stillpointtothesamelocation!list.pop_front();returnstd::move(obj1);}else{Ptrobj2=std::move(list.front());list.pop_front();r

c++ - 指针指向刚好超过对象末尾的位置是什么意思?

指针指向刚好超过对象末尾的位置是什么意思?来自C++Primer,第52页:PointerValueThevalue(i.e.,theaddress)storedinapointercanbeinoneoffourstates:Itcanpointtoanobject.Itcanpointtothelocationjustimmediatelypasttheendofanobject.Itcanbeanullpointer,indicatingthatitisnotboundtoanyobject.Itcanbeinvalid;valuesotherthantheprecedingth

泰迪智能科技生成式人工智能(AIGC)实验室解决方案

   AIGC(ArtificialIntelligenceGeneratedContent,生成式人工智能)是一种新的人工智能技术,指的是利用人工智能技术来生成内容。这种技术可以自动生成文本、图像、音频和视频等多种类型的内容,而且内容的质量较高,可以在一定程度上模仿人类的创造力和写作风格。  为什么高校人才培养需要融入AIGC?  1.AIGC在各行业领域的深入应用,已经成为众多企业的重要生产力工具,因此对人才能力需求提出了新的要求,掌握AIGC应用的人才在各行各业将更受青睐。  2.AIGC产业市场规模逐渐扩大,未来人才需求将持续增长,高校作为重要的人才培养基地之一,紧跟社会发展趋势,培养

基于Springboot车辆大全和百度AI车牌智能识别系统设计与实现 开题报告参考

 博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、PPT、论文模版等项目都录了发布和功能操作演示视频;项目的界面和功能都可以定制,包安装运行!!!如果需要联系我,可以在CSDN网站查询黄菊华老师在文章末尾可以获取联系方式 本科生毕业论文基于Java(springboot框架)车辆大全和智能识别系统开题报告学   院:                      专   业

c++ - 空指针指针(void **)

我正在http://msdn.microsoft.com/en-us/library/windows/desktop/dd389098(v=vs.85).aspx阅读COM示例我真的无法理解(void**)inhr=pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);所以我尝试了类中不同类型指针返回的一些值classPoint{private:intx,y;public:Point(intinputX,intinputY){x=inputX,y=inputY;}intgetX(){returnx;}intgetY(){

C++ CUDA 指向成员的指针

我想知道在CUDA中是否有将指向成员的指针传递给设备函数的方法。由于指针实际上只是相对于结构/类,它似乎没有任何理由不起作用,但我似乎无法编译代码。#includestructS{intF1;intF2;intF3;};__device__Sx;__global__voidinitialize_S(){x.F1=100;x.F2=200;x.F3=300;}__global__voidprint_S(intS::*m){printf("val:%d\n",x.*m);}intmain(){initialize_S>>();print_S>>(&S::F1);cudaDeviceSync