草庐IT

$双指针

全部标签

当 C++ 使用智能指针时,C# 委托(delegate)等效

我主要是一名从事C++项目的.NET程序员,我正在尝试确定处理使用Action和Function模板类型的委托(delegate)的等效方法。我将委托(delegate)用作.NET代码中的事件和回调。我的C++项目使用智能指针和与C#程序相同的委托(delegate)设计模式。处理这种情况的最佳方法是什么?我不清楚如何传递和维护一个函数指针,该函数指针还跟踪智能指针并可能删除底层对象,因为事件容器使用弱引用。该库需要是多平台的,因此不幸的是,使用CLR不是一种选择。 最佳答案 您正在寻找的是绑定(bind)到现有对象的方法指针,就

c++ - 小于函数解引用指针

在某些情况下,STL容器中有指针,小于比较不应由指针进行,而应由指向的对象进行。一个简单的例子是一个vector,它应该按实数排序。目前我解决这个问题:templatestructltDeref{booloperator()(T_PTRp0,T_PTRp1)const{return*p0并将其用作vectorvIn;sort(vIn.begin(),vIn.end(),ltDeref());或set>someSet;与其编写我自己的比较函数,不如在C++中有更“标准”的方法,它不需要用户制作的模板? 最佳答案 通常你可以使用thef

c++ - 通用成员函数指针作为另一个类中的模板参数

我的问题类似于this.而'KarrekSB'sanswer实际上对我有所帮助。我有这些类(class):基础.h:classBase{public:Base(){}virtual~Base(){}virtualvoidinit()=0;};A1.h:#include#include"Base.h"usingnamespacestd;classA1:publicBase{public:A1(){}virtual~A1(){};virtualvoidinit(){cout我有另一个类应该能够存储具有任何类型和数量的参数的任何通用成员函数。该类看起来像这样:MFholder.h:#incl

c++ - 通过指针获取: good practice?装饰一个char*和char const*

你好,我想就我做一个字符串类(如std::string)的想法向公众进行投票,该字符串类具有能够在客户端提供的缓冲区上工作的特性。您预见到的危险是什么?是经典的味道吗?等等我的意思是:charext[64]={0};my::strings(ext,my::string::acquire_RW);size_tlen=s.size();size_tpos=s.find("zboub");my::strings2(s);//usestrue(alloc+)copysemantichere.所以我预见了2种策略:acquire_RW和acquire_RO将允许或不允许修改ext中的字符。在RO

算法(3)前缀和+差分+双指针+位运算

前缀和:一维:原数组:a1,a2,a3,……,an;前缀和:si=a1+a2+a3+……+ai;求法:s[i]=s[i-1]+a[i];作用:快速求出一段的和练习题:795.前缀和-AcWing题库代码:#includeusingnamespacestd;constintN=100010;intq[N];//存数intn,m;//n个数m个询问ints[N];//存前缀和intres[N];//存答案intmain(){ cin>>n>>m; s[0]=0; for(inti=1;i>q[i]; s[i]=s[i-1]+q[i];//存前缀和 } for(inti=0;i>l>>r; re

c++ - 多态性和成员函数指针是如何工作的?

这个问题在这里已经有了答案:Pointerstovirtualmemberfunctions.Howdoesitwork?(3个答案)关闭9年前。我有以下代码:#includeusingnamespacestd;classBase{public:virtualvoidWhoAmI()const;typedefvoid(Base::*WhoPtr)()const;};classDerived:publicBase{public:virtualvoidWhoAmI()const;};voidDerived::WhoAmI()const{cout让我们关注主要内容:intmain(){Bas

C++双指针成员访问

C++(Arduino包装器)问题:我正在一个连接了LCD的Arduino上写一个射击游戏-我有一个基类(Sprite),从这个基类派生出其他类-Alien,Missile和Player.Alien类的构造函数也有私有(private)成员pMissile(指向Missile类的指针)-我认为“对象中的对象”是描述这一点的一种方式。[当Alien发射导弹,它将自己的(x,y)坐标传递给导弹,导弹有自己的从Alien开始移动的方法。的坐标]我的问题是:如何通过Alien访问导弹的坐标?目的?简化的代码如下,我还绘制了类的表示://Bassclass-hasaform/shape,xand

c++ - 单一所有者和多个引用的智能指针

回到过去,我使用原始指针实现链表和树。当我尝试使用智能指针实现时,我遇到了以下问题,因为我不知道如何使用只有一个所有者但有0个或多个引用的指针:举一个二叉树的例子:对于初学者来说,节点应该是指针的唯一“所有者”:节点与树一起生死,所以对我来说,让它们成为unique_ptr是有意义的而不是shared_ptr:classTree{std::unique_ptrroot_;}classNode{std::unique_ptrleft_child_,right_child_;}然后我不得不做一个这样的算法:Node*node=root_.get();//left_countright_co

c++ - 使用未知指针类型调用函数重载

所以,我有一个基类PhysicsObject,子类Colliding,以及再次从中派生的两个类,Static和Newtonian.检查碰撞时,我将所有碰撞写入std::vector>collisionVector.(碰撞检测是相当基础的,它并不是问题的真正一部分。)现在,在检测到所有碰撞后,我遍历collisionVector并调用静态collide方法,它具有以下四个重载:voidcollide(Newtonian*first,Newtonian*second);voidcollide(Newtonian*object,Static*obstacle);inlinevoidcolli

c++ - 以下哪一项是 "auto"推导指针类型的更正确方法?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion(非常基本的问题:)我发现以下两种方式都生成int*类型。我可以知道哪个更合适吗?inti=42;autoa=&i;auto*b=&i;(我试图将指针示例与引用示例相关联:autoc=i;和auto&d=i;。但似乎类比在这里不起作用.)编辑:我还发现另一个(密切相关的)例子很奇怪:autoi=42,p=&i;//failsatcompilationautoi=42,*p=&i;//pas