草庐IT

$C指针

全部标签

c++ - 指向成员函数语法的奇怪指针

我了解如何声明函数的类型:typedefvoid(typedef_void_f)();//typedef_void_fisvoid()usingalias_void_f=void();//alias_void_fisvoid()它可以用来声明函数指针:voidfunction(){std::cout对于成员函数指针,语法稍微复杂一些:structS{voidfunction(){std::cout这是我对C++中函数指针的理解,我认为这已经足够了。但是在p0172r0technicalpaper我发现了一个我不熟悉的语法:structhost{intfunction()const;};

c++ - 从 const 指针创建用户类的 const 对象

是否可以强制编译器在我的类中传播常量限定符,以便为构造函数提供常量指针?考虑以下代码:structT{T(int*a,int*b):a(a),b(b){}int*a;int*b;};inta=1,b=2;constint*aRef=&a;constint*bRef=&b;constTobj(aRef,bRef);//error这显然是不允许的,因为构造函数接受int*,而不是constint*。有什么方法可以达到同样的效果,如果不打算修改const对象中的a和b处的数据类T?编辑下面是一个更接近实际问题的稍微复杂的例子。想象一下,我按顺序传递了一些大型int[]数组(例如,连续1000

c++ SFINAE 检查指向类的指针中的方法

我有这样的代码:templateclassDiskFileFlush{TABLELOADER*_loader;public:voidprocess(){//Iwanttocallthis,//onlyifloader->refresh()exists.notifyLoader();}boolnotifyLoader(){if(loader!=nullptr)returnloader->refresh();returnfalse;}};只有loader->refresh()存在时,我才想调用notifyLoader()。我也使用void作为默认类型,有没有更好的方法来做同样的事情?

c++ - 指向数据结构中元素的指针安全吗? (C++ 与 QT)

我正在开发的软件具有以下结构:ClassA:QHashClassB:QHashClassC:QMap>(thisisbecauseIneedtohavetheitemsordered)QHash>(thisexistssoIcanaccessanitemviaid)我的问题是,将要编辑的指针指向数据结构中的元素是否安全。我在尝试调试时遇到错误,其中调试器无法在断点处停止,并且出现SIGTRAP错误,但我不确定这是否与内存问题有关。举一个更好的例子,与我正在开发的软件相关,我有一个QHash表示视频列表。用户一次只能编辑一个视频,所以我有一个指向当前视频的指针,它是哈希中的一个Take。

c++ - reinterpret_cast 指向基类的指针的 vector 的 vector

考虑以下代码#include#include#include#includestructBase{intx;Base(intx):x(x){}};structDerived:publicBase{inty,z;Derived(intx):Base(x),y(x+1),z(x+2){}};voidupdate(conststd::vector>&elements){for(constautoelem:elements){std::coutx>elements(4);{intctr=0;std::generate(begin(elements),end(elements),[&ctr]()

c++ - 将新运算符应用于数组指针的防错方法

在C中,我做int(*ptr)[100];ptr=malloc(sizeof*ptr);//thisistheeasy/errorproofwayofdoingit是否有一种C++方法可以用new运算符做同样的事情int(*ptr)[100];ptr=new__what_comes_here? 最佳答案 int(*ptr)[100];表示ptr是一个指针,它应该保存一个包含100个整数的数组的地址。换句话说,从技术上讲,如果你有,比如:intarr[100];//automatic(compiletimeallocated)obje

c++ - 对指针的 const 引用可以改变对象

const引用确保您无法更改所引用的对象。例如:inti=1;constint&ref=i;ref=42;//error,becauseofaconstreference但是如果你使用对指针或unique_ptr的引用,你可以。示例:classTinyClass{public:intvar=1;voidf1(){var=42;}};std::unique_ptrpointer(newTinyClass);conststd::unique_ptr&constRef=pointer;constRef->f1();//noerror我假设发生这种情况是因为指针本身没有改变。但是这个感觉mis

c++ - 将 typedef 方法作为指针函数传递

我一直在尝试将方法作为指针函数传递,因此我创建了一个Binder,如图所示here但是由于定义了方法,我无法将它作为参数传递给Binder。我需要传递方法指针的函数来自arduino的正则表达式Lua模式库,找到here.voidInterpreterClass::init(){MatchStatems("255.255.255.255");bind_regex_memberb(this);ms.GlobalMatch("(%d%d?%d?)",b);}voidInterpreterClass::MatchAddressCallback(constchar*match,constuns

c++ - 如何从 C++ 中的原始指针数据构造一个 tensorflow::Tensor

我想在操作期间更改输出张量的底层存储。我有一个新数据的原始指针(float*)。我想在启动内核并返回之前将输出张量设置为这个新数据,这样我就可以劫持这个操作。但是我对什么时候应该删除原始指针感到困惑,因为张量构造似乎是一个浅拷贝。我只能在所有张量使用完毕后删除原始指针。但是我怎样才能收到通知呢? 最佳答案 在TensorFlow运行时中没有用于执行此操作的公共(public)API,但可以使用CAPI方法从原始指针创建Tensor对象TF_NewTensor(),具有以下签名://Returnanewtensorthatholdst

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--