草庐IT

const_cast-ed

全部标签

c++ - 如何从 LPWSTR 转换为 'const char*'

在使用C++/CLI将结构从C#转换为C++之后:publicvaluestructSampleObject{LPWSTRa;};我想打印它的实例:printf(sampleObject->a);但是我得到了这个错误:Error1errorC2664:'printf':cannotconvertparameter1from'LPWSTR'to'constchar*'如何将LPWSTR转换为char*?提前致谢。 最佳答案 使用wcstombs()函数,位于.下面是如何使用它:LPWSTRwideStr=L"Somemessage";

c++ - 如何在实现文件中初始化一个 static const set<string>?

我对staticconstset的初始化似乎不正确,我很感激你的指导方针:obj.h:classobj{...private:staticconstsetkeywords;...}obj.cpp:conststringkw[]={"GTR","LTR","LEQ","GEQ","NEQ","SQRT","sqrt"};constsetobj::keywords=(kw,kw+sizeof(kw)/sizeof(kw[0]));但这会产生错误:error:conversionfrom‘conststring*{akaconststd::basic_string*}’tonon-scala

c++ - 如何将对象添加到 vector<const Obj&>?

我不确定为什么这不能编译:std::vectormyVector;voidfoo(constObj&obj){myVector.push_back(obj);}抱歉,关于我要实现的目标的一些额外信息:我不能在不破坏接口(interface)的情况下更改foo的签名,但我只想卡在通过foo传递的对象上。我确实想存储指向它们的指针,但我对如何做到这一点的语法感到困惑。 最佳答案 您不能拥有引用vector。因为vector中的东西必须是可复制和可分配的,而引用不是这些。您可能需要一个指针vector:std::vectormyVecto

c++ - '从 some_type** 到 const some_type** 的无效转换'

我有一个函数需要constsome_type**作为参数(some_type是一个结构,函数需要一个指向这种类型数组的指针).我声明了一个some_type*类型的局部变量,并对其进行了初始化。然后我将该函数称为f(&some_array),编译器(gcc)说:error:invalidconversionfrom‘some_type**’to‘constsome_type**’这里有什么问题?为什么我不能将变量转换为常量? 最佳答案 参见:Whycan'tIpassachar**toafunctionwhichexpectsaco

c++ - clang 和 gcc 之间对三元运算符的 const 引用地址的差异

我对这里发生的事情有一个模糊的想法...它与this有关但我想知道为什么clang++和g++以不同的方式处理这个问题。这里的未定义行为在哪里?注意:这与模板无关——我只是使用它们来使示例更紧凑。这都是关于whatever的类型。#include#includetemplatevoidtest(){Twhatever='c';constchara='a';std::cout();test();return0;}gcc输出(测试到4.9.3):begin:0x7fffe504201fref:0x7fffe504201fbegin:0x7fffe504201eref:0x7fffe5042

c++ - 有没有理由我们能够在类定义中定义 [static const int] 而不是其他 static const 类型?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyaren'tstaticconstfloatsallowed?在C++中这不可能吗?这让我很困惑。staticconstintA=100;//noerrorstaticconstfloatB=2.0f;//error,can'tdefinethistypeinclassdefinition.

传递 const 数组时 C++ 错误区分特化

考虑代码templateclassB;templateclassB{};templateclassB{};templateclassB{};templateclassB{};以下模板实例化工作正常:AAA但下面的不起作用:A是否有某种原因导致此特定组合无效,或者它可能是g++4.6.3的错误?顺便说一句,我设法使用SFINAE和boost::disable_if解决了这个问题,所以至少问题解决了。编辑我忘了提到有问题的错误是一个模棱两可的类模板实例化,它无法决定是对const的重载还是对数组的重载。EDIT2这与指针无关,这里是完整的上下文:我正在阅读C++TemplateMetapr

c++ - 下标对 const 的引用

我在这里查看一些C++代码,但我不理解某些东西。它无关紧要,但它来自与文档一起提供的YARP(机器人中间件)教程。virtualvoidgetHeader(constBytes&header){constchar*target="HUMANITY";for(inti=0;i现在,header是对const的引用,因此不能在此函数中修改。get是在它上面调用的,它的原型(prototype)是char*get()const;。header.get()如何下标和修改?该程序编译正常。我可能不明白这里发生了什么,但我是基于我在C++Primer中读到的内容......非常感谢您的澄清!祝你有

c++ - 用 reintepret_cast 解释对象地址

以下代码给出的输出为136。但我无法理解前两个地址比较是如何相等的。感谢任何有助于理解这一点的帮助。谢谢。#includeclassA{public:A():m_i(0){}protected:intm_i;};classB{public:B():m_d(0.0){}protected:doublem_d;};classC:publicA,publicB{public:C():m_c('a'){}private:charm_c;};intmain(){Cd;A*b1=&d;B*b2=&d;constinta=(reinterpret_cast(b1)==reinterpret_cast

c++ - reinterpret_casting 一个指针类型的整数和返回是否产生相同的值?

根据http://en.cppreference.com/w/cpp/language/reinterpret_cast,众所周知,reinterpret_cast是一个指向足够大的整数的指针,并且返回相同的值。我想知道反过来是否也符合标准。也就是说,reinterpret_cast是否是具有足够大小的指针类型的整数并返回相同的值? 最佳答案 不,标准不保证这一点。引用C++14(n4140)[expr.reinterpret.cast]中涉及指针-整数转换的所有部分,强调我的:4Apointercanbeexplicitlycon