我想重载*
运算符以便乘以两个对象(点积)。C++中的重载运算符
这些对象可以是Point3D
,Vector3D
或Normal
。它们基本上都具有相同的结构(x,y和z值),我只将它们分解为语义。
是给我找麻烦线路是这样的:
float t = (point - r.origin)*normal/(r.direction * normal);
这里,点和r.origin是Point3D
,正常是Normal
和r.direction是Vector3D
。在这些类的头文件,我有以下过载功能:
在Vector3D.h:
Vector3D operator *(Normal& n);
在Point3D.h:
Point3D operator -(Point3D& p);
Point3D operator *(Normal& n);
我得到的错误是:
No match for 'operator*' in 'r->Ray::direction * ((const Plane*)this)->Plane::normal'
假设我已经正确地填写了.cpp文件中的函数,有没有什么愚蠢的我已经完成这里?另外,请忽略这样一个事实,那就是没有分工操作员......这正在进行中!
干杯
欢呼的帮助,但将其全部更改为常量给我'丢弃限定符'的错误。对不起,我昨天才开始C++:/ – 2012-03-29 00:23:27
也许你可以给我们提供一个[* complete * example](http://sscce.org),它可以证明你遇到的问题。我们只能猜测代码的其余部分是什么样的,对任何人来说都没有什么效果。 – 2012-03-29 00:24:29
'丢弃限定符'意味着你在函数中调用了一些不需要'const'的东西,但可能应该这样做。向我们展示更多代码。 – 2012-03-29 00:25:42