草庐IT

weak_intrusive_pointer

全部标签

c++ - 为什么 intrusive_ptr 和 shared_ptr 不能与 boost::intrusive 容器一起使用?

boost::intrusive文档描述了如何youcanusesmartpointerswithintrusivecontainers但接着说你不能使用你最有可能使用的智能指针,“它必须具有与原始指针相同的所有权语义。这意味着资源管理智能指针(如boost::shared_ptr)不能被使用。”这是为什么?我想不出任何明显的理由应该禁止它们。究竟什么会破坏?无论如何,侵入式容器不会管理其中元素的分配。就我而言,我想使用intrusive_ptr,但我看不出shared_ptr也不能工作的任何原因。编辑:明确地说,我的意思是Hook指针(例如侵入式单链表中的下一个指针)是一个智能指针。

C++ 继承 : Templates Vs Pointers

我试图了解在继承场景中指针和模板之间的最佳解决方案是什么。考虑以下类。classEvent{};classFilter{public:virtualvoidprocess(Event*event)=0;};classPipeline{private:std::vector_filters};每个用户都可以扩展Event类和Filter类来保存实际数据和实际过滤功能。管道类只是将过滤器与队列连接在一起并执行方法过程。到目前为止,我一直使用指针来处理继承,例如过滤器指针的std::vector和接收事件指针的过程函数。可以使用模板代替指针吗?例如classEvent{};templatec

c++ - 在 C++ 中从 vector<pointer*> 复制到 vector<pointer*>

我创建了一个vectorA并想通过以下方法复制到另一个类中的vectorB,这是正确的方法吗?vectorA可能会被破坏!我在谷歌搜索,但没有找到好的解决方案和有意义的解释。谢谢大家voidStateInit(vectorlistBtn){_m_pListBtn=listBtn;}; 最佳答案 是也不是,您是按值传递vector:voidStateInit(vectorlistBtn){_m_pListBtn=listBtn;};这意味着listBtn是vectorA的拷贝(假设我们称vectorA作为StateInit的参数传递)

c++ - 从 shared_ptr 到 weak_ptr 多态性的转换

我很难解决这个问题。假设我有这个vectorstd::vector>cars;Car是一个抽象类。我希望能够返回不同类型的弱指针,所以我执行以下操作。templatestd::weak_ptrGetCar(){for(std::vector>::iteratorit=cars.begin();it!=cars.end();++it){T*derived=dynamic_cast((*it).get());if(derived!=nullptr){std::weak_ptrcarPointer=*it;returncarPointer;}}returnstd::weak_ptr();}但

objective-c - “Ordered comparison of function pointers” 警告是什么意思?

我收到了这个编译器警告:Orderedcomparisonoffunctionpointers('IMP'(aka'id(*)(id,SEL,...)')and"IMP")当我尝试比较两个实体时:for(i=0;kaddress){//thisisthelinecausingthewarningsize_tdiff=(size_t)classMap->address-(size_t)imp;if(diff能否请您解释一下此警告的最终原因以及解决方法。 最佳答案 在直接回答问题时,当您尝试比较两个函数指针的地址时,会生成函数指针警告的

iphone - 为什么使用 __weak 不会导致局部变量立即消失?

我从事同一个项目已有一段时间了,随着时间的推移,我对Objective-C和Cocoa的理解也有了一些进展。回顾我的代码的某些部分,我看到了这一点:__weakASIFormDataRequest*serverQueueRequest=[ASIFormDataRequestrequestWithURL:url2];[serverQueueRequestsetCompletionBlock:^{NSLog(@"%@",serverQueueRequest.responseString);}];[serverQueueRequeststartAsynchronous];这就是我处理所有服务

ios - 当前部署目标不支持 -fobjc-weak

我刚刚更新了我的Pod,其中一个BoringSSL现在正在错误地构建我的构建,并出现以下错误:AppleLLVM9.0Error-fobjc-weakisnotsupportedonthecurrentdeploymenttarget不确定我需要在这里做什么?这是BoringSSL包或我的项目的问题吗?EDIT我相信这被grpc使用了? 最佳答案 这是CocoaPods/Xcodeproj#544最近发布了修复程序。将Xcodeprojgem从1.5.5更新到1.5.6。 关于ios-当

ios - objc_msgSend() 传递了 "a pointer to the reciever' s 数据是什么意思”?

在Apple的ObjC运行时指南中,它描述了objc_msgSend()函数对动态调度的作用:Itfirstfindstheprocedure(methodimplementation)thattheselectorrefersto.Sincethesamemethodcanbeimplementeddifferentlybyseparateclasses,thepreciseprocedurethatitfindsdependsontheclassofthereceiver.Itthencallstheprocedure,passingitthereceivingobject(apo

iOS 警告消息 : Incompatible pointer types passing 'CGFloat *' (aka 'double *' ) to parameter of type 'float *'

这导致我的应用出现问题。此错误发生在这一行modff(floatIndex,&intIndex);我需要做什么来解决这个问题?编辑:这是因为&intIndex-(BOOL)isFloatIndexBetween:(CGFloat)floatIndex{CGFloatintIndex,restIndex;restIndex=modff(floatIndex,&intIndex);BOOLisBetween=fabsf(restIndex-0.5f) 最佳答案 我记得CGFloat在32位设备上定义为float,在64位设备上定义为do

ios - 如何在方法中使用 __weak 来防止 iOS 中的内存泄漏

我一直在尝试在iOS应用程序中进行一些模拟计算,但随着时间的推移,我的手机内存不足,它不会停止增加内存使用量,尽管我知道这是在哪里发生的(用Instruments解决了)我仍然不知道我需要更改什么来阻止内存泄漏。这是进行内存分配的方法,我知道我要在此处添加新数据,但我认为ARC会释放所有我无法再引用的已分配数据?intround=0;InstanceInSimulation*simulatingChosen=[[InstanceInSimulationalloc]initWithSimulationInstance:_chosenInstance];InstanceInSimulati