草庐IT

exp_members

全部标签

C++ 继承 : scoping and visibility of members

你能解释一下为什么这是不允许的吗,#includeclassB{private:inta;public:inta;};intmain(){return0;}这是什么时候?#includeclassA{public:inta;};classB:publicA{private:inta;};intmain(){return0;}在这两种情况下,我们在classB中都有一个名为a的公共(public)变量和一个私有(private)变量。现在编辑! 最佳答案 Inboththecases,wehaveonepublicandonepriv

c++ - 通过修改的exp最快的pow()替换。当已经计算出较低的幂时,通过平方

编辑:目标:通过重用公共(public)变量的功效计算中预先计算/缓存的功效,生成一种无处不在的方法来推导自定义功效函数,其性能优于内置pow(double,uint)。已经完成的工作:我已经派生了一个比内置函数快40%的函数,但这是一个蛮力的手工派生函数-我想要一种为任意uint幂自动生成这样的幂函数块的方法。知道要获得最佳的自定义pow(double,uint),您需要了解一些信息。对于这个问题,已知(澄清)是:幂将是一个整数。可以知道的最大功率(N_MAX)。可以(重新)使用的预先计算的功效是已知的在编译时(例如,在我的示例中r2,r4和r6)。可以假定平方r2始终被计算出来,无

c++ - 一元负重载 : member or non-member?

假定前缀一元运算符可以“由不带参数的非静态成员函数或带一个参数的非成员函数实现”(§13.5.1[over.unary]/1),除了适用于任何成员/非成员函数选择的通常封装/代码重用设计原理之外,还有什么区别吗?对于二元运算符,there'sasemanticdifference因为非成员允许对其左侧操作数进行隐式转换。一元运算符似乎没有类似的东西,但标准将std::complex的一元否定运算符定义为非成员(§26.4.6[complex.ops]),而std::valarray和std::duration的一元否定运算符是成员(§26.6.2.6[valarray.unary],§

c++ - enable_if : minimal example for void member function with no arguments

我试图更好地理解C++11中的std::enable_if并且一直在尝试编写一个最小的示例:一个类A带有成员函数voidfoo()根据类模板中的类型T具有不同的实现。下面的代码给出了期望的结果,但我还没有完全理解它。为什么版本V2有效,但V1无效?为什么需要“冗余”类型U?#include#includetemplateclassA{public:A(Tx):a_(x){}//EnablethisfunctionifT==int/*V1*///template::value,int>::type=0>/*V2*/template::value,int>::type=0>voidfoo(

c++ - 对齐 : warning C4316 in all classes that have aligned members

今天我遇到了很多麻烦,因为我跟踪了一个非常隐蔽的腐败漏洞。我想如果我真的注意警告就不会那么难找到它,但由于找不到有关为什么弹出此特定警告的相关信息,我让它滑动了,这是一个错误。所以这是VisualStudio2013给我的有罪警告:warningC4316:objectallocatedontheheapmaynotbealigned16它是在通过const引用将align(16)临时传递给构造函数时生成的,如以下代码所示:classVector{};__declspec(align(16))classVectorA{};classShape{public:Shape(constVec

c++ - 错误 : invalid use of member in static member function

我有两个类,这是其中一个的标题:#ifndefWRAPPER_HPP#defineWRAPPER_HPP#includeusingnamespacestd;classWrapper{private://SDL_Surface*screen;public:staticSDL_Surface*screen;staticvoidset_screen(SDL_Surface*_screen);staticvoidset_pixel(intx,inty,Uint8color);staticvoidclear_screen(intr,intg,intb);staticSDL_Surface*loa

c++ - exp10 不同于 pow(10)

首先,我意识到大多数以10为底的数字不能以2为底精确表示,所以我的问题并不是关于浮点运算的缺陷。我正在尝试编写一个函数,该函数将尝试通过检查最后6个有意义的数字是否在某个公差范围内并将其更改为某个假设的精确值之上的下一个可表示值(仅用于显示目的)来纠正被累积舍入误差双重污染的函数-除非它是整数或2的幂)。尽管我的函数的一个组成部分让我感到惊讶,但它是exp10的输出;据我所知,只要两个double之间的间距小于2,那么存储为double的整数值就应该是精确的——尽管10^14插入它,这应该是一个精确的整数(因为10^14=~2^46.507我的调试工作(没有什么特别明显)和输出的摘录如

c++ - 为什么我得到 std::exp 的平台特定结果?

这个问题在这里已经有了答案:Isfloatingpointmathbroken?(31个答案)MathprecisionrequirementsofCandC++standard(1个回答)关闭3年前。我有一个程序在Android和Windows下给出了截然不同的结果。当我根据包含预期结果的二进制文件验证输出数据时,即使差异很小(舍入问题)也很烦人,我必须找到一种方法来修复它。这是一个示例程序:#include#include#includeintmain(intargc,char*argv[]){//thisvaluewasidentifiedasproducingdifferent

c++ - CString 'Trim' : is not a member, 为什么?

我有一个简单的应用程序,我尝试用VCExpress编译并使用:适用于WindowsServer2003的Microsoft平台SDK,包含MFC和ATL。现在我有了这个简单的代码:CStringstrValue("test");CStrings=strValue.Trim();LPCTSTRlpStr=(LPCTSTR)strValue.Trim()这给我一个编译错误:c:\dev\test.cpp(463):errorC2039:'Trim':不是'CString'的成员c:\programfiles\microsoftplatformsdkforwindowsserver2003r

c++ - 错误消息 : 'value_type' : is not a member of

我不明白这个神秘的错误消息,但我得到了30个`'value_type':isnotamemberof'TextFileLineBuffer'`当我在VC++6中编译以下代码时,//***行未注释。当然,如果我把它注释掉,它编译得很好。我想我在过去的两个小时里尝试了各种尝试,但都没有成功。任何提示将不胜感激。#include#include#include#include#include#include//wrapperforastringlinestructTextLine{std::stringm_sLineContent;operatorstd::stringconst&()con