草庐IT

const_object

全部标签

c++ - 使用 const 成员对自定义对象的 vector 进行排序

我想对包含const类对象的vector进行排序成员变量。不幸的是,我收到一条错误消息,指出“没有匹配函数来调用“swap””。当我删除const的关键字id,然后std::sort()适用于重载的operator和自定义比较功能。为什么会这样?我通常可以不对属于具有const成员变量的类的对象进行排序吗?#include#include#includeusingnamespacestd;structA{constintid;A(intid):id(id){}booloperatorvec;vec.emplace_back(3);vec.emplace_back(0);vec.empl

c++ - 为什么我会收到 CL_MEM_OBJECT_ALLOCATION_FAILURE?

我在GPU上分配一个cl_mem缓冲区并对其进行处理,在超过一定尺寸之前效果很好。在那种情况下,分配本身会成功,但执行或复制不会。我确实想使用设备的内存来加快操作速度,所以我分配如下:buf=clCreateBuffer(cxGPUContext,CL_MEM_WRITE_ONLY,buf_size,NULL,&ciErrNum);现在我不明白的是大小限制。我正在复制大约16MB,但应该可以使用大约128MB(参见CL_DEVICE_MAX_MEM_ALLOC_SIZE)。为什么这些数字相差如此之大?这是oclDeviceQuery的一些摘录:CL_PLATFORM_NAME:NVID

c++ - 获取 std::set 元素地址时从 ‘const int*’ 到 ‘int*’ 的无效转换

我收到以下错误error:invalidconversionfrom‘constint*’to‘int*’以下是我的程序#includeintmain(intargc,char**argv){std::setintSet;intSet.insert(1);intSet.insert(2);intSet.insert(3);intSet.insert(4);intSet.insert(5);int*pAddress=&(*(intSet.find(4)));}我想要std::set中元素的地址,此代码不会给Microsoft编译器带来任何编译错误,但g++会给出此编译错误。

c++ - 资格调整(const/volatile)可能导致歧义

谁能帮我理解为什么当getter是const时下面的代码无法编译(VS2010)?测试代码如下:#includeclasssocket{public://setter-throwexceptionversionvoidnon_blocking(boolmode){//...}//getter-errorcodeversionboolnon_blocking(boost::system::error_code&ec)const{//...}//setter-errorcodeversionvoidnon_blocking(boolmode,boost::system::error_cod

c++ - 什么是内存更昂贵。 "creating and deleting objects"还是 "reusing a object"?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我有一个对象,每10秒在整个游戏过程中需要一个对象。我应该继续删除对象还是继续使用同一个对象?对象在所谓的“空闲时间”中位于何处?因为是手游,内存是个问题。所以,只是想知道哪种方法会富有成效。"creatinganddeletingobjects"?或"reusingaobject"?谢谢

c++ - 是否可以在运行时确定指针指向 C++ 类还是指向 Objective-C 类?

问题在主题中。我想编写一些用于安全删除对象的通用模板函数,想知道是否可以使用这样的函数:templatevoidSafeDelete(T*&pVal){if(objc_is_cpp_object(pVal)){deletepVal;pVal=NULL;}else[pValrelease]} 最佳答案 如评论中所述,我建议不要混合使用C++delete和Objective-Crelease。仅出于技术角度,您可以使用以下SFINAE技巧运行时:templatestructvoid_{typedefvoidtype;};template

c++ - 如何识别代码中const char*和const char[]的类型?

constchar*s1="teststirg";constchars2[]="teststirg";我想要一个方法告诉我s1是“char*”而s2是“char[]”,怎么写这个方法? 最佳答案 使用模板:templateboolIsArray(T(&a)[SIZE]){returntrue;}templateboolIsArray(T*p){returnfalse;}这将在运行时进行评估。用法:if(IsArray(s1))...if(IsArray(s2))...如果有兴趣,您可以使用一些高级技术,它会告诉您这是编译时间。编辑:

c++ - static const string 成员变量是否总是在使用前初始化?

在C++中,如果我想定义一些non-localconststring,可以在不同的类、函数、文件中使用,我知道的方法是:使用定义指令,例如#defineSTR_VALUE"some_string_value"const类成员变量,例如classDemo{public:staticconststd::stringConstStrVal;};//thenincppstd::stringDemo::ConstStrVal="some_string_value";const类成员函数,例如classDemo{public:staticconststd::stringGetValue(){ret

c++ - 右值或左值 (const) 引用参数

我想通过r-或l-值(const)引用将参数(某种具体类型,比如int)传递给成员函数。我的解决方案是:#include#includestructF{usingdesired_parameter_type=int;template::type,desired_parameter_type>::value>::type>voidoperator()(X&&x)const{//orevenstatic_assert(std::is_same::type,desired_parameter_type>::value,"");std::forward(x);//somethinguseful

c++ - 使 C++ 变量成为 const

我喜欢“const”。我希望每个“应该是常量”的变量和方法都是“常量”。问题是变量或方法是否“应该是常量”取决于调用树中更下方的方法/变量。是否有某种工具或某种过程可用于静态检查代码体并执行“自下而上的常量化”? 最佳答案 我不知道你问题的答案,但我想反驳这种说法whetheravariableormethod"oughttobeconst"dependsonmethods/variablesfurtherdowninthecalltree其实const应该是逻辑层面的。IE。如果逻辑上不应更改,则应将其标记为const。如果稍后是