我有一个vec2类,定义如下
@extends('layout')
操作符+重载在执行class vec2 {
public:
float x, y;
...
//add a scalar
vec2 operator+(float s) const {
return vec2(this->x + s, this->y + s);
}
};
时效果很好但在向后执行时不起作用,如vec2 v = otherVector * 2.0f;
。
解决方案是什么?
答案 0 :(得分:0)
以你的例子,表达式
otherVector * 2.0f
相当于
otherVector.operator+(2.0f)
创建一个重载运算符作为成员函数 only 允许对象位于左侧,右侧传递给函数。
简单的解决方案是添加另一个运算符重载,作为非成员函数
vec2 operator+(float f, const vec2& v)
{
return v + f; // Use vec2::operator+
}