草庐IT

const-char

全部标签

使用 shared_ptr 到 const T 的 C++ 模板实例化

假设我有一个类templateclassA{public:templatevoidf(std::tr1::shared_ptr>v1,std::tr1::shared_ptr>v2){}};以下不编译:Aa;std::tr1::shared_ptr>v1(newstd::vector());std::tr1::shared_ptr>v2(newstd::vector());a.f(v1,v2);编译错误是:error:nomatchingfunctionforcallto'A,std::allocator>>::f(std::tr1::shared_ptr>>&,std::tr1::s

c++ - Boost::GIL 如何将图像保存为 JPEG 或 PNG 到 char*?

所以我看到了关于保存到文件中的示例。但我想知道是否可以将其保存到char*或字符串而不是文件中-也就是说将其保存在内存中? 最佳答案 似乎没有任何东西可以boostboost本身。所有I/O似乎都基于提供文件名。不过好像有个扩展名here称为io_new,它具有基于流的I/O。参见文档here举个例子(搜索“读写内存缓冲区”)。 关于c++-Boost::GIL如何将图像保存为JPEG或PNG到char*?,我们在StackOverflow上找到一个类似的问题:

c++ - 为什么我的重载模板函数以不同于非模板函数的方式提升为 const。

我有一个可以正常工作的重载函数。(示例中的f)。当我将它转换为同一事物的模板版本时,它总是调用T&版本而中断,从不调用T*。(示例中的t)当我制作模板函数的非常量版本时,它按预期工作。(示例中的t2)这发生在VS2010和g++4.6.2中。对const规则的提升是否不同,或者这是某种错误。#includeusingnamespacestd;intf(constint&x){return1;}intf(constint*x){return2;}templateintt(constT&x){return3;}templateintt(constT*x){return4;}template

c++ - 在设备上的线性内存中循环二维数组时将 float* 转换为 char*

在CUDA4.0编程指南的第21页有一个示例(下面给出)来说明循环遍历设备内存中二维float组的元素。2D的尺寸是width*height//Hostcodeintwidth=64,height=64;float*devPtr;size_tpitch;cudaMallocPitch(&devPtr,&pitch,width*sizeof(float),height);MyKernel>>(devPtr,pitch,width,height);//Devicecode__global__voidMyKernel(float*devPtr,size_tpitch,intwidth,int

c++函数参数char指针和字符串

voidcallme(stringa){cout为什么char*会被调用?为什么当我注释掉带有char*参数的函数时,会调用另一个函数? 最佳答案 那是因为"ASDADS"可以转换为char*。因此,编译器会为它可以匹配参数的第一个函数生成代码。如果您使用char*删除原型(prototype),编译器将查找接受参数的函数,该参数具有从char*到参数类型的隐式转换。以下面为例:classA{public:A(){}A(intx){}};//voidfoo(intx){}voidfoo(Ax){}intmain(intargc,ch

c++ - 为什么按值返回对于非内置类型应该是 const 而对于内置类型不是 const?

上的解决方案4和5GotW#6Const-Correctness提及这一点:PointGetPoint(constinti){returnpoints_[i];}Return-by-valueshouldnormallybeconstfornon-builtinreturntypes..intGetNumPoints(){returnpoints_.size();}..sincetheintisalreadyanrvalueandtoputin'const'caninterferewithtemplateinstantiationandisconfusing,misleading,an

c++ - 向成员函数添加 const 限定符

我目前正在编写一个接口(interface)类,它应该提供对复杂结构的内部元素作为常量或非常量引用的访问。这个想法是一些模块被授予const访问权限,而一些模块被授予完全访问权限。我已经使用'type_traits''std::add_const'来有条件地限定内部成员函数的返回类型,不幸的是我想不出有条件地将成员函数限定为const或非const的方法。这可能吗?如果是这样怎么办?例如:templatestructapply_const{typedefTtype;};templatestructapply_const{typedeftypenamestd::add_const::ty

具有相同名称的 C++ const 和可变函数

考虑以下代码。#includeusingnamespacestd;classObject{public:Object(){}voidPrint()const{coutPrint();return0;}输出是constconstmutableconstmutable我想知道,当面对许多具有相同名称的可变方法时,C++如何决定调用哪个方法? 最佳答案 print_obj(obj1);print_obj(obj2);要调用的函数根据传递对象的cv-qualifier(const/volatile)求值。请注意,cv-qualifiers在

c++ - vector<shared_ptr<T>> 和 vector<shared_ptr<const T>> 之间的高效转换

我有一个类:classX{vector>v_;public:vector>getTs(){returnv_;}};它有一个vector的shared_ptr类型T.出于某种原因,它需要公开一个方法来返回这个vector。但是,我不想修改vector的内容,也不想指向对象。所以我需要返回一个vector的shared_ptr.我的问题是,有什么有效的方法可以做到这一点吗?如果我简单地返回它,它可以工作,但它需要重建一个vector,这有点昂贵。谢谢。 最佳答案 你不能直接这样做-但你可以在你的容器上定义“View”,让你做一些非常相似

c++ - 获取 const 左值引用的地址是否合法?

#includeintfoo(){return0;}intmain(){constint&a=foo();std::cout在这段代码中,a绑定(bind)到一个右值。取它的地址合法吗?(我的法律意思是:在代码中格式不正确?我是否导致了未定义的行为?) 最佳答案 这很好。在C++11中,您甚至可以这样做:int&&a=foo();a=123;您可以这样考虑临时对象(概念上和一般情况下):x=func();//translatedas:auto__temporary=func();x=__temporary;__destruct_va