草庐IT

double-dispatch

全部标签

c++ - C++菱形继承(钻石问题)中如何调用所有基类的拷贝构造函数来拷贝大部分派(dispatch)生类对象?

考虑下面的代码:#includeusingnamespacestd;classA{public:A(){cout程序的输出如下:13571358因此,对于行Dd(d1)D的拷贝构造函数正在调用类。在继承过程中,我们需要显式调用基类的复制构造函数,否则只会调用基类的默认构造函数。到这里我才明白。我的问题:现在我想在Dd(d1)期间调用所有基类的复制构造函数执行。为此,如果我在下面尝试D(constD&obj):A(obj),B(obj),C(obj){cout然后我得到这个错误:错误:'classAA::A'isinaccessiblewithinthiscontext如何解决这个问题。

c++ - 如何在 Lua 5.2.3 中将 lua_number 从 double 正确更改为 float

我希望lua_number得到一个float而不是double。我知道我必须更改luaconf.h中的某些内容,但我不知道是什么。我正在使用Lua5.2.3和VisualStudioC++。 最佳答案 您需要编辑luaconf.h并更改这些:LUA_NUMBER到floatLUA_NUMBER_SCAN到"%f"LUA_NUMBER_FMT到"%.7g"l_mathop(x)到(x##f)lua_str2number使用strtof对于最后两个,您可能需要一个支持(部分)C99标准的C编译器。

c++ - 使用 GCC 或/和 IAR 编译时如何禁用 double 学?

我的嵌入式C代码在具有单精度FPU的CortexM4F上运行。我担心编译器多久将基于软件的double学放在诸如**float_var1=3.0*int_var/float_var_2;(3.0insteadof3.0f)**我担心我会错过其中一些双常数。我怎样才能找到所有出现的较慢的double学?使用sourceryGCC或IAR禁用double或生成错误/警告即可。请指导我实现目标的正确方法。 最佳答案 HowcanIlocatealloccurrencesofslowerdouble-precisionmath?Disabl

c++ - 原始 float 和 double 支持多少位小数?

这个问题在这里已经有了答案:'float'vs.'double'precision(6个答案)关闭7年前。我读过double存储15位数字,float存储7位数字。我的问题是,这些数字是支持的小数位数还是数字中的总位数?

C++在数学计算中将double转换为int

当我写cout我得到1.5但是当我写cout我得到6。如果3.0和2.0是double值,我的结果不应该是像6.0这样的double值吗?根据什么结果是int还是double? 最佳答案 3.0*2.0的结果非常是双(a)。但是,值的呈现并不是值。你会发现6,6.0,6.00000,0.06E2,6000E-3甚至是象征性的-6(epi×i)是所有相同的值,但具有不同的表示形式。如果您不想要默认显示(b),iostream和iomanipheader具有将数字格式化为特定格式的功能,例如使用它来获取6.0:#include#incl

c++ - double to hex string & hex string to double

我要做的是将double字符串转换为十六进制字符串,然后再转换回double。以下代码将double字符串转换为十六进制字符串。char*double2HexString(doublea){char*buf=newchar[17];//doubleis8-bytelong,sowehave2*8+terminating\0char*d2c;d2c=(char*)&a;char*n=buf;inti;for(i=0;i这似乎可行,但是,我不确定如何将生成的字符串转换回double字符串。请指教:) 最佳答案 我很惊讶地看到没有人提出标

C++ double 到 long long

如果我用c++写代码:longlongd=999999998.9999999994;cout我得到输出:999999999(四舍五入)但是这段代码的输出:longlongd=999999998.9999994994;cout是999999998(向下舍入)跟精度有关系吗?有什么办法可以改变精度。floor()函数也给出相同的输出。我还注意到,如果我将值8.9999994994或8.9999999994分配给d(上述变量)。输出为8。 最佳答案 999999998.9999999994不能用double精确表示,因此实际值是99999

c++ - 如何从 dispatch_apply (GCD) 循环写入数组?

我编写了代码来使用Runge-Kutta方法计算大量耦合主方程的动力学。代码包含很多for循环,其中每个步骤都是独立的。我打算使用GrandCentralDispatch来加速程序。我的尝试基于我在http://www.macresearch.org/cocoa-scientists-xxxi-all-aboard-grand-central找到的示例.我的代码和macresearch上的示例都不能在我的机器上编译(MacOSX10.6.8Xcode4.0.2)。所以这是我的代码:...doublevalues[SpaceSize],k1[SpaceSize];for(intt=1;t

c++ - double /整数模板函数的 vector

我想概括一个函数。简单地说,我有一个std::strings我用生成std::vector的解析器处理(它是一个列表,如"1,2,3"),函数应该返回一个std::vector。,与T限于double或int.vector应包含转换后的值。我坚持使用std::transform的最后一个参数,因为它应该在std::stod之间切换和std::stoi.我正在寻找的解决方案是使用模板元编程魔法,而不是if(std::is_same::value).有什么提示吗?templateautoget_vector(std::strings)->std::vector{std::vectorv;a

c++ - 如何检查 double 是否有小数部分?

基本上我有两个变量:doublehalfWidth=Width/2;doublehalfHeight=Height/2;因为它们被除以2,所以它们要么是整数,要么是小数。我如何检查它们是整数还是.5? 最佳答案 您可以使用modf,这应该足够了:doubleintpart;if(modf(halfWidth,&intpart)==0){//yourcodehere} 关于c++-如何检查double是否有小数部分?,我们在StackOverflow上找到一个类似的问题: