草庐IT

指针认证

全部标签

c++ - 将指向数组的指针传递给函数 (C++)

我试图将一个数组传递到我对build_max_heap和max_heapify的函数调用中,这样我就可以在每次调用后修改该数组,但我收到一条错误消息“候选函数不可行:没有来自'int[9]的已知转换'到'int*&'第一个参数。”#include#includeusingnamespacestd;voidbuild_max_heap(int*&array,intsize);voidmax_heapify(int*&array,intsize,intindex);voidbuild_max_heap(int*&array,intsize){for(inti=size/2;i>=0;i--

c++ - 以类型安全的方式将指针转换为指针

给定以下代码:classBase{public:virtual~Base()=default;};classDerived:publicBase{};intmain(void){Derivedd;Base*pb=&d;Base**ppb=&pb;Derived**ppd=...;//Canthisbedefinedinatype-safemanner?return0;}是否可以在不引入Derived*类型的中间变量的情况下,为ppd的赋值给出一个类型安全的表达式? 最佳答案 AFAIK,并非没有声明一个指向d的Derived指针。指

c++ - 如何通过 vector/ map 使用指向对象的多个指针

我有一个关于使用多个指向一个对象的指针的问题。我在vector中有一个指针,在map中有另一个指针。map使用vector来索引对象。示例代码:classThing{public:intx=1;};Thingobj_Thing;std::vectorv_Things;v_Things.push_back(&obj_Thing);std::mapm_ThingMap;m_ThingsMap[v_Things[0]->x]=v_Things[0];//crucialpart像这样互相分配指针是好习惯吗?vector和/或map应该保存地址吗?或者我应该使用指向map指针的指针吗?

c++ - 能否从指向子对象的指针获得指向完整对象表示元素的指针?

让我们考虑这段代码:inti;intis[10]{};unsignedchar*p=reinterpret_cast(&i);//pdefinedtopointtotheobject-representationofthefirstelementofarrayintsunsignedchar*ps=reinterpret_cast(&is[0]);p+=sizeof(int);ps+=sizeof(int);//nowpspointstotheendofints[0]andppointtotheendofi;p+=sizeof(int);//Undefinedbehavioraccor

c++ - 将 C++ lambda 复制到函数指针引用

我不确定我是否定义了以下情况下的行为:我的函数指针类型:typedefvoid(*DoAfter_cb_type)(void);应该分配回调的函数:voidDoSomething(DoAfter_cb_type&DoAfter_cb){//...DoAfter_cb=[](){//...};}来电者:DoAfter_cb_typeDoAfter_cb=nullptr;DoSomething(DoAfter_cb);//HereissomethingthathastobedoneafterDoSomethingbutbeforeDoAfter_cb.if(DoAfter_cb!=null

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++ - 指向 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是有意义的,甚至是必要的为了避免局部变量和数据成

让 Web3 认证拥有和 Web2 一样丝滑体验的技术路径

目录前言让Web3认证拥有和Web2一样的体验ERC4337以太坊账户抽象Web3AuthUniPass 前言在Web2中,我们可以通过1password、google密码管理等程序帮助管理密钥。但助记词和私钥的使用大多比较强调离线备份,或者存放在硬件钱包里,或者采用更加安全的多签等技术。这些对于专业用户来说还好,对于Web3用户来说就有一些难度了。我们是否可以像Web2那样保管密钥?不需要抄写,不需要硬件。即安全,又可以快速的恢复?对于不同的使用需求,可以有不同的密钥管理策略,大额资产可以使用专业级安全方案。社交应用就使用一些便捷的方法,这样的角色授权分离,也让我们在使用不同应用时不至于过多