gpt4 book ai didi

c++ - 为类模板重载非成员算法

转载 作者:行者123 更新时间:2023-11-28 04:46:06 24 4
gpt4 key购买 nike

我正在尝试重载 operator* 以处理用不同类型实例化的类模板,但从编译器中得到“太多模板参数列表”。这是我的函数实现:

template <typename T>
template <typename E>
inline Vec2<T> operator*(Vec2<T> lhs, Vec2<E>& rhs)
{
lhs *= rhs;
return lhs;
}

template <typename T>
template <typename E>
inline Vec2<T> operator*(Vec2<T> lhs, E scalar)
{
lhs.x *= scalar;
lhs.y *= scalar;
return lhs;
}

这是我将其用于的用例:

Vec2<float> scale(0.5, 0.8);
Vec2<short> value(50, 100);

Vec2<short> result = value * scale;
// value should now equal (25, 80)

最佳答案

嗯,您使用的语法不正确。

template <typename T>
template <typename E>
//...

仅在您定义模板类的模板成员时使用,这不是您的情况。在你的情况下,你应该简单地使用

template <typename T, typename E> Vec2<T> operator*(Vec2<T> lhs, Vec2<E>& rhs)

关于c++ - 为类模板重载非成员算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49244698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com