草庐IT

C++智能指针之unique_ptr

全部标签

c++ - 为什么 UuidFromString 函数请求非常量指针指向 unsigned char?

我不知道为什么UuidFromString函数需要非常量指向无符号字符的指针。为什么不用constchar*代替呢?我的想法是不需要修改第一个参数所指出的数据。 最佳答案 UuidFromString专为COM/DCOM而设计。unsignedchar是为了防止需要检查负数char值(默认char是signed,这意味着值的范围是[-128,127]-因为这个字符串应该是ANSI字符,这是避免条件检查的一种廉价方法)。它的姊妹函数(UuidToString)确实需要一个const输入参数。我在文档中看不到关于为什么UuidFromS

【金猿人物展】东方金信董事长兼总经理王伟哲:价值化、智能化驱动下的大数据,治理仍需深化...

‍王伟哲本文由东方金信董事长兼总经理王伟哲撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度趋势人物榜单及奖项”评选。大数据产业创新服务媒体——聚焦数据 ·改变商业2023年,数据要素、公共数据授权运营成为热点话题,也是激活数据资产的必经之路。我个人认为,进一步提升数据治理成效、确立一体化的政务数据权责体系是目前的当务之急。12月15日,国家数据局发布了《“数据要素×”三年行动计划(2024—2026年)(征求意见稿)》,向社会公开征求意见。“数据要素×”涉及12大应用场景,主要通过数据要素的融合,提升各行业的数字化水平,促进数据要素的流通和应用,实现数据要素的价值最大化。结合行

c++ - 指向多次实例化的函数模板的指针

我有一个与函数模板相关的简单问题。假设我有一个header,其中包含一个带有名为f的模板方法的类:classtest{public:templatevoidf(Tt){}};如果此header包含在多个.cpp文件中,并且这些.cpp中的每一个都使用相同的类型(假设为int)调用f,我可以在其他地方获取函数的指针吗代码?考虑到可能有多个定义,链接器会只保留一个吗? 最佳答案 Ifthisheaderisincludedinseveral.cppfiles,andeachofthese.cppcallsfwiththesametype

c++ - 从 boost::shared_ptr<string> 返回 C 字符串

我将一些C++代码包装在函数中,以便使C++方法在C中可用。C++API方法返回boost::shared_ptr通常的对象。我在C++中导出的函数如下所示:extern"C"constchar*Hazelcast_Map_get_int_string(Hazelcast_Client_t*hazelcastClient,constchar*mapName,intkey,char**errptr){IMapmap=hazelcastClient->client->getMap(mapName);boost::shared_ptrvalue=map.get(key);string*str

c++ - 指向引用的指针的非空比较警告

我写了下面的代码:voidfoo(int&x){boolb1=(&x)==nullptr;boolb2=&x==nullptr;int*ptr=&x;boolb3=ptr==nullptr;}对于上面的代码,我遇到了以下错误:对于b1变量:test.cpp:5:21:warning:nonnullargument‘x’comparedtoNULL[-Wnonnull-compare]对于b2变量:test.cpp:6:19:warning:thecompilercanassumethattheaddressof‘x’willneverbeNULL[-Waddress]test.cpp:

c++ - 数组衰减到指针和重载解析

我希望能够在重载决策中区分数组和指针:classstring{public:string(constchar*c_str);templatestring(constchar(&str)[N]);};intmain(){constchar*c_str="foo";stringfoo(c_str);//okwillcallstring(constchar*)stringbar("bar");//callstring(constchar*)insteadofthearrayversion}到目前为止我发现的最好的方法是使用对指针的引用而不是指针:classstring{public:stri

c++ - 为什么 std::shared_ptr 提供 operator<<?

std::shared_ptr提供operator它只是写出它的地址。没有operator>>只记录地址,不记录内容。我想知道它在哪些情况下有用。 最佳答案 因为是一个潜在有用的东西在原始指针上执行。这是安全的,原始指针就是这样做的,shared_ptr在某些情况下应该用于替换原始指针。相比之下,>>很少有意义。与原始指针不同,将指针值存储在共享指针中会取得它的所有权。我可以some_stream>>raw_ptr除非我用ptr做些什么没有任何问题;有点奇怪,但没有立即中断。对shared_ptr做同样的事情只有在极其深奥的情况下才

c++ - 不完整类型的 std::unique_ptr 无法编译

我将pimpl-idiom与std::unique_ptr结合使用:classwindow{window(constrectangle&rect);private:classwindow_impl;//definedelsewherestd::unique_ptrimpl_;//won'tcompile};但是,我在的第304行收到关于使用不完整类型的编译错误:Invalidapplicationof'sizeof'toanincompletetype'uixx::window::window_impl'据我所知,std::unique_ptr应该能够与不完整的类型一起使用。这是lib

基于 HTML5 WebGL 构建智能数字化城市 3D 全景

前言自2011年我国城镇化率首次突破50%以来,《新型城镇化发展规划》将智慧城市列为我国城市发展的三大目标之一,并提出到2020年,建成一批特色鲜明的智慧城市。截至现今,全国95%的副省级以上城市、76%的地级以上城市,总计约500多个城市提出或在建智慧城市。基于这样的背景,本系统采用Hightopo的  HTforWeb 产品来构造轻量化的智慧城市3D可视化场景,通过三个角度的转换,更清晰让我们感知到5G时代下数字化智能城市的魅力预览地址:HT智慧城市整体预览图第一个视角下,城市以市中心为圆心缓缓浮现,市中心就如同整座城的大脑第二个视角下,在楼房间穿过,细致的感受这城市的面貌 第三个视角下,

c++ - 为什么指针衰减优先于推导的模板?

假设我正在编写一个函数来打印字符串的长度:templatevoidfoo(constchar(&s)[N]){std::cout现在我想扩展foo以支持非数组:voidfoo(constchar*s){std::cout但事实证明这打破了我最初的预期用途:foo("hello")//nowprintsraw,size=5为什么?这不需要数组到指针的转换,而模板是完全匹配的吗?有没有办法确保我的数组函数被调用? 最佳答案 这种(符合标准的)歧义的根本原因似乎在于转换成本:重载解析试图最小化将参数转换为相应参数所执行的操作。数组实际上是