草庐IT

forward_static_call

全部标签

c++ - 用 static_cast<int> 舍入?

我觉得问这个真的很傻,因为我知道如何做101种方法,但不知道书中定义的方法。(注意,我懂C++)到目前为止,我们只介绍了C++的基础知识。所以基本上,我们知道变量、赋值和基本转换。在书中我遇到了这部分问题:提示用户输入十进制数将该数字转换为最近的整数并将其打印到屏幕上所以我有简单的代码:doublen;cout>n;cout(n)但我意识到这对我不起作用。它总是会截断小数点,以便1.9->1而不是预期的1.9->2如何仅使用我“知道”的内容来解决此问题?(如,没有round()或if语句等)这是标准合规问题吗?在学校我以为我在WindowsXP32位上使用VisualC++2005有类

c++ - C++ 中的多态性 : Calling an overridden method

首先,我是一名Java编码员,想了解C++中的多态性。我为学习目的编写了示例:#includeusingnamespacestd;classA{public:virtualvoidfoo(){std::cout我预计overridenfoo会被打印出来,但事实并非如此。为什么?我们覆盖了classB中的方法foo,我认为应该调用哪个方法的决定是根据对象的运行时类型做出的,在我的例子中是B,但不是静态类型(在我的例子中为A)。实时示例是there 最佳答案 当你这样做时:Ac=B();您正在将B值转换为A。你不想这样。您应该创建一个B

c++ - 错误 : ISO C++ forbids in-class initialization of non-const static member

这是头文件:employee.h#ifndefEMPLOYEE_H#defineEMPLOYEE_H#include#includeusingnamespacestd;classEmployee{public:Employee(conststring&first,conststring&last)重载的构造函数:firstName(first),firstName重载构造函数lastName(last)lastName重载构造函数{//Theconstructorstart++counter;它为每个创建的对象加一;cout析构函数cout返回每个对象的名字和姓氏--counter;计

c++ - 为什么静态成员函数定义不能有关键字 'static' ?

根据thisC++中'static'关键字的链接:Thestatickeywordisonlyusedwiththedeclarationofastaticmember,insidetheclassdefinition,butnotwiththedefinitionofthatstaticmember.为什么在成员函数定义中禁止使用static关键字?我确实理解在定义中将函数重新声明为“静态”是多余的。但是在函数定义的编译过程中使用它应该是无害的,因为它不会导致任何歧义。那么为什么编译器会禁止它呢? 最佳答案 有歧义好吧。成员函数完

c++ - 为什么在定义(而不是声明)静态数据成员时不能使用 "' static'?

我正在寻找在C++中初始化静态map的方法,并找到了以下代码:structA{staticmapcreate_map(){mapm;m[1]=2;m[3]=4;m[5]=6;returnm;}staticconstmapmyMap;};constmapA::myMap=A::create_map();但是,如果我将最后一行更改为conststaticmapA::myMap=A::create_map();编译器投诉:在定义(而不是声明)静态数据成员时可能不使用“静态”?我想知道为什么?这背后的逻辑或推理是什么? 最佳答案 stati

c++ - 使用 std::forward 的构造函数

据我所知,在C++11中高效实现构造函数的两种常用方法是使用其中的两种Foo(constBar&bar):bar_{bar}{};Foo(Bar&&bar):bar_{std::move(bar)}{};或者只是一种Foo(Barbar):bar_{std::move(bar)}{};使用第一个选项可实现最佳性能(例如,希望在左值的情况下为单个拷贝,在右值的情况下希望为单个move),但需要对N个变量进行2N重载,而第二个选项只需要一个函数,代价是传入左值时需要额外move。在大多数情况下,这不会产生太大影响,但肯定这两种选择都不是最佳选择。但是,也可以执行以下操作:templateF

c++ - 是否有 "safe"static_cast 替代方案?

C++11/14中的static_cast或实现此功能的库是否有“安全”替代方案?我所说的“安全”是指强制转换应该只允许不丢失精度的强制转换。因此,从int64_t到int32_t的转换只有在数字适合int32_t时才被允许,否则会报告错误。 最佳答案 有gsl::narrownarrow//narrow(x)isstatic_cast(x)ifstatic_cast(x)==xoritthrowsnarrowing_error 关于c++-是否有"safe"static_cast替代方

c++ - 编译时等效的 std::cout,或 c++11 中编译时常量值的 static_assert 字符串化

有没有办法打印constexpr的值?或#defined编译时的值?我想要std::cout的等价物,或某种方式来做类似的事情constexprintPI_INT=4;static_assert(PI_INT==3,const_str_join("PI_INTmustbe3,not",const_int_to_str(PI_INT)));编辑:我可以使用constexpr进行一些基本的编译时打印s,至少在gcc上做类似的事情templatestructdisplay_non_zero_int_value;templatestructdisplay_non_zero_int_value{

c++ - std::forward_list 和 std::forward_list::push_back

我想使用std::forward_list因为:Forwardlistisacontainerwhichsupportsfastinsertionandremovalofelementsfromanywherefromthecontainer但是没有*std::forward_list::push_back*实现。是否有一种高性能的方式来添加对单或无理由的支持? 最佳答案 我建议反对std::forward_list就像我在几乎所有情况下反对std::list一样。就个人而言,我从来没有在我的代码中发现链表是最好的数据结构。在C++

c++ - MSVC++ : template's static_assert is not triggered inside a lambda

更新2:这已在VS2019Preview16.1Preview1中得到修复。更新:我已在visualstudio.com提交错误报告.所以我开始研究C++的模板,当我试图阻止使用static_assert编译模板类时遇到了这个问题。基本上,static_assert错误在VS2017上使用C++语言标准:ISOC++17标准(/std:c++17)。我也在gcc-7上使用-std=c++17进行了尝试,并触发了错误。这是VS2017上的错误还是我遗漏了什么?代码示例:#include#include#includetemplateclassIntegralContainer{stati