如何解决模板抛出很多错误
| 我正在为我的一个项目创建一个助手名称空间,我希望它能够使用所有类型,例如int,float,doubles等。但是似乎我只是无法正确使用模板。 无论如何,这是我当前的代码,我的编译器不会吐出有关文件本身的错误,尽管当我编译它时,它会吐出其他文件中的数百个错误。 当我删除文件中的模板时,这些错误不存在:#include \"..\\util\\Logger.hpp\"
namespace gm
{
namespace math
{
namespace MathHelper
{
// Value of Pi
const double PI = 3.1415926535897932384626433832795028841972;
// Value of euler
const double E = 2.7182818284590452353602874713526624977572;
// Convert radians to degrees
template <typename T>
T Rad2Deg(T angle)
{
return angle * (180 / (T)PI);
}
// Convert degrees to radians
template <typename T>
T Deg2Rad(T angle)
{
return angle * ((T)PI / 180);
}
// Clamp a value in between the given min and max
template <typename T>
T Clamp(T value,T min,T max)
{
if(min > max) { gm::util::Logger::DisplayError(\"Invalid argument in MathHelper::Clamp,max is over min\"); }
if(value < min) { value = min; }
if(value > max) { value = max; }
return value;
}
// Exponentiate value a with value b
template <typename T>
T Exp(T a,int b)
{
if(b < 0) { gm::util::Logger::DisplayError(\"Invalid argument in MathHelper::Exp,b must be positive\"); }
T value = a;
for(int i = 1; i < b; i++) { value *= a; }
return value;
}
// Get the absolute value of the value passed
template <typename T>
T Abs(T a,T b)
{
if(value < 0) { value = -value;
return value;
}
};
};
};
我将编译错误放入此粘贴中:http://pastebin.com/AxwmDyDh
解决方法
如果您将ѭ1传递给
T
,则deg / rad转换功能将无法正常工作,因为PI在执行转换之前会被截断为int。我不太清楚你为什么要在那里。
如果任何地方都有using namespace
,则使用变量名称如min
和max
会引起问题。
您的abs
函数缺少if
上的闭合}
。这可能会在呼叫点导致错误。
,if
中缺少花括号。
if(value < 0) { value = -value;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。