草庐IT

static_if

全部标签

c++ - const_cast 与 static_cast

添加const到非常量对象,哪个是首选方法?const_cast或static_cast.在最近的一个问题中,有人提到他们更喜欢使用static_cast,但我会认为const_cast将使代码的意图更加清晰。那么使用static_cast的理由是什么?使变量成为常量? 最佳答案 也不要使用。初始化引用对象的const引用:Tx;constT&xref(x);x.f();//callsnon-constoverloadxref.f();//callsconstoverload或者,使用implicit_cast函数模板,例如theo

c++ - 对 `Static Class Member variable inside Static member function' 的 undefined reference

我实际上正在尝试实现分页的模拟,在我的内存管理器中,我尝试创建一个静态页表,但是当我尝试打印它时它给出了引用错误。#ifndefMEMORYMANAGER_H#defineMEMORYMANAGER_H#include"memory.h"classMemoryManager{private:PhysicalMemoryRAM;LogicalMemoryVM;intoffsetValue;staticint**pageTable;public:MemoryManager();booladdProcess(TimeSliceRequest);voidprintVirtualMemory()

c++ - 为什么全局 const char 需要 "static"而 bool 不需要?

共享header。我能做到:constboolkActivatePlayground=false;包含在多个文件中时工作正常。我不能这样做:constchar*kActivePlayground="kiddiePool";导致错误:重复的符号。但这行得通:staticconstchar*kActivePlayground="kiddiePool";为什么constchar*需要static而constbool不需要?另外,我认为static不是必需的,因为const总是static隐式? 最佳答案 在C++中,const变量默认有静

c++ - 为什么要检查 if (*argv == NULL)?

这个问题在这里已经有了答案:Whencanargv[0]havenull?(4个答案)关闭5年前。在我目前正在学习的数据结构类(class)中,我们的任务是用C++编写网络爬虫。为了让我们抢先一步,教授为我们提供了一个从给定URL获取源代码的程序和一个简单的HTML解析器来去除标签。该程序的主函数接受参数,因此使用argc/argv。用于检查参数的代码如下://Processtheargumentsif(!strcmp(option,"-h")){//dostuff...}elseif(!strcmp(option,"")){//dostuff...}elseif(!strcmp(op

c++ - static_cast 安全

AFAIK,对于指针/引用static_cast,如果此时编译器看不到类定义,则static_cast的行为将类似于reinterpret_cast。为什么static_cast对指针/引用不安全而对数值安全? 最佳答案 简而言之,因为多重继承。长:#includestructA{inta;};structB{intb;};structC:A,B{intc;};intmain(){Cc;std::cout(&c)(&c)输出:Cisat:0x22ccd0Bisat:0x22ccd4Aisat:0x22ccd0请注意,为了正确转换为B

c++ - 如何在 unsigned int 和 int 之间安全地进行 static_cast?

我有一个8字符的string表示一个十六进制数,我需要将它转换为一个int。此转换必须保留字符串"80000000"及更高版本的位模式,即这些数字应为负数。不幸的是,天真的解决方案:inthex_str_to_int(conststringhexStr){stringstreamstrm;strm>val;returnstatic_cast(val);}如果val>MAX_INT(返回值为0),则对我的编译器不起作用。将val的类型更改为int也会导致较大数字为0。我已经尝试了SO上各种答案的几种不同解决方案,但尚未成功。这是我所知道的:我在OpenVMS上使用HP的C++编译器(我相

c++ - 带有多个参数的 static_cast 是怎么回事?

谁能告诉我这个转换有什么效果(除了将happyNumber设置为1337),如果有的话,如果没有其他效果,我怎么能写这样的代码???这是编译器错误,还是C++的某些“隐藏特性”?inthappyNumber=static_cast(123.456,TRUE,"WTF",false,"IS",NULL,"GOING",0xff,"ON???",1337);我很惊讶这会编译。我是通过一个bug发现它的,在这个bug中我不小心将第二个参数设置为要进入正在转换的表达式的函数调用中的参数。这导致了一个讨厌的错误,其中对象是从第二个参数转换而来的,调用函数时只有一个参数。它编译了……而且最初并没有

c++ - 为什么我不能用 std::remove_if 从 std::set 中删除一个字符串?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:remove_ifequivalentforstd::map我有一组字符串:setstrings;//...我希望根据谓词删除字符串,例如:std::remove_if(strings.begin(),strings.end(),[](constwstring&s)->bool{returns==L"matching";});当我尝试这样做时,出现以下编译器错误:c:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC\include\algorithm(1840):

c++ - enable_if 方法特化

templatestructA{Aoperator%(constT&x);};templateAA::operator%(constT&x){...}如何使用enable_if对任何浮点类型(is_floating_point)进行以下特化?templateAA::operator%(constfloat&x){...}编辑:这是我想出的答案,与下面发布的答案不同......templatestructA{Tx;A(constT&_x):x(_x){}templatetypenamestd::enable_if::value&&std::is_floating_point::value

在 Windows 中运行的 Python 代码,我可以使用 "if not win32"绕过它的一部分吗

我尝试在Windows上的Eclipse中运行以下python代码,但它显示错误提示pwd不是有效的导入:importosimportpwdimportsocketpinfo=pwd.getpwuid(os.getuid())我可以使用ifnotwin32来绕过这部分,以便当它在Windows上运行时它只是跳转到并且不会产生错误吗?ifnotwin32:importosimportpwdimportsocketpinfo=pwd.getpwuid(os.getuid())else:return如果是,我需要做什么才能使用此win32,因为它还显示错误提示undefinedvariabl