Я создаю пространство имен помощников для одного из моих проектов, я хотел, чтобы он мог использовать все типы, такие как целые числа, числа с плавающей запятой, двойные числа и т. Д. Но, похоже, я просто не могу правильно выбрать шаблон.
В любом случае, вот мой текущий код, мой компилятор не выдает ошибки о самом файле, хотя, когда я компилирую его, он выдает сотни ошибок в других файлах.Эти ошибки отсутствуют при удалении шаблонов в файле:
#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