带浮点的C ++模运算符。 我知道模数%运算符只能用于两个操作数都是整数,如果有人试图使用浮点数,它会导致编译错误。
error C2296: '%' : illegal, left operand has type 'double'
然而,我在某些情况下,我没有控制和代码执行浮动%浮动导致编译问题 因此我尝试创建自己的dbl minimalist类来实现相同的目的。
// testMod.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "math.h"
class DBL{
public:
bool lastError;
float dbl;
DBL()
{
dbl = 0.0;
}
DBL(float b)
{
dbl = b;
}
/*float operator % (float t)
{
return fmod(dbl, t);
}*/
operator float()
{
return dbl;
}
friend float operator % (DBL a, DBL b);
};
float operator % (DBL a, DBL b)
{
return fmod(a.dbl, b.dbl);
}
#define float DBL
int main(int argc, _TCHAR* argv[])
{
float temp;
float a = 3.24;
float b = 4.32;
temp = a % b ;
temp = 0;
temp = a % b;
temp = 3.14 % 5.01; // compilation error here
return 0;
}
无法编译。我希望使用隐式转换,但它似乎并没有这样做。如果一个人只处理自己并依赖于其他一切的默认转换,那么这也是一个极简主义的转换吗?
答案 0 :(得分:-1)
我认为您应该将值转换为整数,以便支持输入。 (int)foo
是最简单的转化,但对您来说可能不够。如果它不能满足您的需求,那么您需要编写自己的自定义转换。如果这种方法无法解决您的问题,那么您将需要修改库的源代码(通过逆向工程,如果合法和必要),或者,如果不是一个选项,请要求作者使用{{1} } 在图书馆。你的想法很聪明,但不幸的是,事情并非如此。