【发布时间】:2012-05-02 00:13:11
【问题描述】:
// vec2.h
template<class v_float=float>
class vec2
{
public:
v_float m[2];
};
template<class v_float>
vec2<v_float> operator* (v_float & f, vec2<v_float> & v);
template<class v_float>
vec2<v_float> vec2<v_float>::operator* (v_float & f, vec2 & v)
{
return vec2(v.m[0]*f, v.m[1]*f);
}
我想为上面的模板类 vec2 重载 operator*,但是上面的代码给了我以下错误: vec2.cpp:68: error: 'vec2 vec2::operator*(v_float&, vec2&)' must take零个或一个参数
如何为模板类重载 operator*(float, vec2)?注意operator*的参数个数必须是两个。
【问题讨论】:
-
算子作为成员函数实现时,参数的个数减少1个。
标签: c++ templates operator-overloading