我有一个名为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();
我尝试编译但它给了我奇怪的错误,例如“Class Vec2D没有迭代器......” 我认为可以解释这个问题的唯一原因是结果中没有类?
答案 0 :(得分:1)
这里的问题可能就是您实现-
运算符的方式。原型应该是:
Vec2D operator- (const Vec2D &rhs) const
或课外
Vec2D operator- ( const Vec2D& v1, const Vec2D& v2 )
您的运营商如何申报?特别是 - 什么是操作返回类型?