草庐IT

const_object

全部标签

c++ - 将 Derived*const 转换为 Base*const

编辑-将问题置于上下文中。给定:structBase{...};structDerived:publicBase{...};classAlice{Alice(Base*const_a);...};classBob:publicAlice{Bob(Derived*const_a);...};当我尝试实现时Bob::Bob(Derived*const_d):Alice(static_cast(_d)){}它不起作用。const_cast对我来说没有意义,因为我不想更改常量,而且我没有更改我指向的内容,那么为什么g++会告诉我invalidstatic_castfromtype‘Derive

iphone - 在 Objective-C 中包装 C++ 库并不是隐藏 C++ 符号

我正在尝试用Objective-C包装一个C++库(用于SybaseUltralite),以便可以将该库导入到MonoTouch中。我创建了一个Objective-C库,并将编译后的C++库包含在这个项目中,libulrt.a。为了编译我的项目,我将路径设置为UserHeaderSearchPath以指向C++头文件所在的目录。然后我不得不将compilesourceas设置为Objective-C++。现在的问题是,虽然包装器库编译正确,但一旦我将它包含在另一个Xcode项目中,我必须再次将compilesourceas设置为Objective-C++否则使用我的包装器库的项目会出现

c++ - const boost::array<T,N> 还是 boost::array<const T,N>?

这两者有什么区别?当您需要固定大小的常量值数组时,您更喜欢哪一个?constboost::arrayx={0,1};boost::arrayy={0,1};谢谢。 最佳答案 第二个会阻止你将它复制到一个新的非常量数组boost::arrayy={0,1};boost::arrayy1=y;//error!因为我希望它能起作用,所以我可能会选择第一个选项。将第二个传递给需要boost::array的模板将防止这些模板修改它们的参数(即使它是一个拷贝)。第一个将“正常工作”,因为参数的类型为boost::array.

c++ - 为什么不能在 C++ 中将 int** 转换为 const int**

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:whyisntitlegaltoconvert(pointertopointertonon-const)toa(pointertopointertoaconst)您好,我有以下代码,但无法理解为什么这不起作用-我收到一条错误消息“无法从int**转换为constint**”。但是,如果我将printValues的第一个参数更改为“constint*const*myArray”,一切正常。我知道我可能无论如何都不应该使用下面的那个,但我不明白为什么它根本无法编译。如果不在main()中将其声明为常量,就不能拥有

c++ - const 类成员在赋值运算符重载时有用吗?

我有一个类,其成员不会被类的方法更改,所以我将其标记为const。我的问题是我像复制构造函数一样使用默认赋值运算符以避免多次声明。但在这种情况下,赋值运算符不会自动生成,所以我得到了一些编译器错误:'operator='函数不可用。这似乎没有现实生活中可以实际使用const类成员的场景(例如,您在STL代码中看到过任何const成员吗?)。除了删除const之外,还有什么办法可以解决这个问题吗?编辑:一些代码classA{public:constintsize;A(constchar*str):size(strlen(str)){}A():size(0){}};Acreate(cons

c++ - std::list of objects 效率

假设您有某个类的std::list。您可以通过两种方式制作此列表:1)std::listmyClassList;MyClassmyClass;myClassList.push_front(myClass);使用此方法,当您将对象传递给列表时,复制构造函数将被调用。如果该类有很多成员变量,并且您多次进行此调用,它的成本可能会很高。2)std::listmyClassList;MyClass*myClass=newMyClass();myClassList.push_front(myClass);这个方法不会调用类的复制构造函数。我不太确定在这种情况下会发生什么,但我认为该列表将创建一个新

c++ - if ('fstream object' ) 如何根据文件是否打开返回真值或假值?

我很好奇fstreamclass是如何简单地返回一个true或false值的将对象的名称放在条件语句中。例如……std::fstreamfileStream;fileStream.open("somefile.ext");if(!fileStream)//Howdoesthiswork?std::cout我问这个是因为如果我以类似的方式使用它,我希望我自己的类返回一个值。 最佳答案 它并不是真的等于真或假,而是它重载了!运算符以返回其状态。参见http://www.cplusplus.com/reference/iostream/i

c++ - 转换为 `const Y` 不适用于 clang 上的 `R&&`

下面的代码可以用g++(GCC)4.7.120120721编译,但是最近构建的clang版本3.2(trunk)失败。structY{};structX{operatorconstY()const{returnY();}};voidf(Y&&y){}intmain(){f(X());return0;}将转换运算符更改为operatorY()const就足够了使代码在两个编译器上都能编译。在这种情况下,哪个编译器实际上符合标准?做什么标准实际上是这样说的?要求的逐字错误:bla.cpp:14:5:error:noviableconversionfrom'X'to'Y'f(X());^~~

gpt支持json格式的数据返回(response_format: ‘json_object‘)

Api.h5.chatCreateChatCompletion({model:'gpt-3.5-turbo-1106',token:'sk-f4fe8b67-fcbe-46fd-8cc9-fd1dac5d6d59',messages:[{role:'user',content:'使用json格式返回十二生肖,包含中文名和英文名,[{id:"1",enName:"",cnName:""}]',},],params:{n:1,response_format:{type:'json_object'},},}).then((res)=>{if(res.code===200){console.log(r

c++ - 将 STL 容器<T *> 转换为容器<T const *>

我正在寻找一种方法来制定具有以下内容的类:使用具有最大“常量”的指针的STL容器的接口(interface)但是它在内部改变了指向的对象与非常量模拟相比没有额外的运行时开销理想情况下,与非const版本相比,该解决方案将编译成没有额外的代码,因为const/非const-ness在这里只是对程序员的一种帮助。这是我到目前为止尝试过的:#include#includeusingnamespacestd;typedefintT;classC{public://Elementspointedtoaremutable,listisnot,'this'isnot-compilesOKlistco