草庐IT

cast-expression

全部标签

c++ - 如何使用 scons 2.3 visual express 2012 构建 C++ 项目?

我尝试:env=Environment(ENV={'PATH':os.environ['PATH'],\'INCLUDE':'c:\\ProgramFiles(x86)\\MicrosoftVisualStudio11.0\\VC\\include\\',\'LIB':'c:\\ProgramFiles(x86)\\MicrosoftVisualStudio11.0\\VC\\lib\\'})但它不起作用。错误信息:“cl”不是命令...我在sconswiki(http://www.scons.org/wiki/PlatformSpecificNotes#Visual_C.2B-.2B

c++ - boost::lexical_cast 无法识别重载的 istream 运算符

我有以下代码:#include#includestructvec2_t{floatx;floaty;};std::istream&operator>>(std::istream&istream,vec2_t&v){istream>>v.x>>v.y;returnistream;}intmain(){autov=boost::lexical_cast("1231.2152.9");std::cout我从Boost收到以下编译错误:Error1errorC2338:Targettypeisneitherstd::istreamablenorstd::wistreamable这看起来很简单,

c++ - 向上转换时的隐式转换与 static_cast

假设我有三个类:A(母亲,抽象),B和C,A的child。所以B和C继承自A(公有继承)。我有一个指向A的指针列表,我用B或C的指针填充它。问题是:在进行转换/转换时,哪种风格是首选?classA{};classB:publicA{};classC:publicA{};B*objB=newB();C*objC=newC();std::listmyList;//OptionA:staticcastconversionmyList.push_back(static_cast(objB));myList.push_back(static_cast(objC));//OptionB:impli

c++ - 什么是 Visual C++ 2008 Express 中的代码定义窗口?

我正在处理SphereOnlineJudge问题(好吧,我只是第2个大声笑)并使用VC++2008express,并且刚刚注意到“代码定义窗口”。这东西到底有什么作用?对我这样的初学者有用吗? 最佳答案 代码定义窗口为您提供光标所在代码的额外上下文。例如,如果您在以下代码中将光标置于Cat上:Catc;然后它会在代码定义窗口中显示Cat类的定义。如果你有如下代码:c.meow();当你将光标放在c上时,它会显示c的定义位置。(即代码行:Catc;)不使用此窗口,您只需右键单击代码的任何部分并选择gotodefinition。

c++ - dynamic_cast 中的模糊转换

考虑获取对象作为参数并打印其类型的问题:#includeclassA{};classB:publicA{};classC:publicA{};classD:publicC,publicB{};usingnamespacestd;templatevoidprint_type(T*info){if(dynamic_cast(info))cout(info))cout(info))cout(info))cout它给我以下错误:“从派生类‘D’到基类的转换不明确。”但是我没看出歧义在哪里:如果main(d)中声明的对象是D类型,为什么不能直接转换为A类型呢?此外,如果我传递一个字符串类型的参数

c++ - 将 dynamic_cast 与模板一起使用

在用C++实现基于模板的工厂时,我创建了以下allocator函数来实例化给定的子类:templateParentClass*allocator(){ChildClass*child=newChildClass();ParentClass*parent=dynamic_cast(child);if(NULL==parent){deletechild;returnNULL;}returnparent;}一切正常,但是当通过静态代码分析工具(如coverity)运行代码时,deletechild;行被标记为逻辑死代码。我进行运行时检查的原因是为了断言,ChildClass是从ParentC

c++ - 不允许从 'const unsigned char *const *' 到 'const char *const *' 的 static_cast

我遇到的是我的编译器拒绝将我的unsignedchar指针转换为signedchar指针。我有一段时间感到困惑,因为我一直在使用static_cast来转换符号性最长的时间。然后我做了一点挖掘(好吧,不是很深。我做了一点挖掘!)尽管现在我明白了static_cast防止指针类型转换恰恰是为什么它是更安全和更好的转换方式(比可能调用实现定义行为或未定义行为的传统替代方法)的原因,我仍然不确定我应该为我的情况实际做什么。我这里调用的是签名为的OpenGLAPI函数voidglShaderSource(GLuintshader,GLsizeicount,constGLchar**string

c++ - VC++ express,我该如何解决这个错误?

我有C#编程经验,但我这学期正在上C++课,并且正在编写我的第二个项目,但是当我尝试构建我的程序的调试配置时,我总是遇到这个错误。我的构建日志在下面,关于发生了什么的任何想法?我很茫然。谢谢大家!1>------RebuildAllstarted:Project:Project_2,Configuration:DebugWin32------1>Deletingintermediateandoutputfilesforproject'Project_2',configuration'Debug|Win32'1>Compiling...1>main.cpp1>Linking...1>LI

c++ - 是否可以使用 const_cast 覆盖我的 const C++ 成员函数,返回一个指向内部非常量数组的 const 指针?

我正在学习C++并遇到了这个const_cast运算符。考虑以下示例:classTest{private:charname[100];public:Test(constchar*n){std::strncpy(name,n,99);name[99]=0;}constchar*getName()const{returnname;}}现在用户可以做Testt("hi");const_cast(t.getName())[0]='z';//modifiesprivatedata...这样好吗?我的意思是修改私有(private)数据,因为returnconstchar*的目的是防止更改私有(p

c++ - 使用 boost::lexical_cast 将 UUID 转换为字符串时出现 Boost 编译错误

我有这段代码是基于SO中的几篇文章:boost::uuids::uuiduuid=boost::uuids::random_generator()();autouuidString=boost::lexical_cast(uuid);但是当我编译这段代码时,我得到了这个错误:Sourcetypeisneitherstd::ostream`ablenorstd::wostream`ableC:\Local\boost\boost\lexical_cast\detail\converter_lexical.hpp我该如何修复这个错误? 最佳答案