Джим, кодирующий некоторый класс шаблона для использования математики, например, вектор 2d. Я хотел бы definie постоянного вектора для моего класса: UnityX:Определение константы и шаблон
template <typename T>
class Vector2 {
public:
...
static Vector2 UnityX();
...
T x,y;
};
И я не знаю, как осуществить это, потому что если я делаю:
template <typename T>
Vector2<T> Vector2<T>::UnityX()
{
return Vector2(1, 0);
}
я буду иметь некоторые предупреждения во время компиляции причина неявного преобразования типов. предупреждение C4244 от VS2013: преобразование «конверсия» из «type1» в «type2», возможная потеря данных.
Чтобы решить эту проблему, я стараюсь:
template <typename T>
Vector2<T> Vector2<T>::UnityX()
{
return Vector2(static_cast<T>(1.0), static_cast<T>(0.0));
}
С помощью этого решения, у меня нет больше предупреждения во время компиляции, но сделать static_cast не будет замедлять работу? Это лучшее решение?
не беспокойтесь о проблемах с производительностью, если вы не можете доказать, что они существуют. и 'static_cast' - лучший способ. –
Как выглядит конструктор Vector2? – swang
Какое точное предупреждение и код конструктора и тип T вы используете? –