1

我有一个名为 Vec2D 的类来处理 2d 矢量操作。

   Vec2D pos1 = Vec2D( 100, 100 );
   Vec2D pos2 = Vec2D( 100, 100 );

我有运算符重载,所以算术可以更简单。因此,我可以执行以下操作:

Vec2D difference = pos1-pos2;
float distance = difference .magnitude(); 

我想知道我的班级可以做这样的算术吗?:

float distance = (pos1-pos2).magnitude();

我尝试编译,但它给了我奇怪的错误,例如“Vec2D 类没有迭代器......” 我想出来的唯一原因是结果中不存在类这一事实?

4

1 回答 1

1

这里的问题可能是您实现-运算符的方式。原型应该是:

Vec2D operator- (const Vec2D &rhs) const

或课外

Vec2D operator- ( const Vec2D& v1, const Vec2D& v2 )

您的运营商是如何声明的?特别是——操作返回类型是什么?

于 2013-01-03T05:47:34.823 回答