在对象之前用数字重载运算符+(int)

时间:2015-12-22 12:21:50

标签: c++

我有一个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;

解决方案是什么?

1 个答案:

答案 0 :(得分:0)

以你的例子,表达式

otherVector * 2.0f

相当于

otherVector.operator+(2.0f)

创建一个重载运算符作为成员函数 only 允许对象位于左侧,右侧传递给函数。

简单的解决方案是添加另一个运算符重载,作为非成员函数

vec2 operator+(float f, const vec2& v)
{
    return v + f;  // Use vec2::operator+
}