【发布时间】:2015-06-30 06:27:04
【问题描述】:
我有一个向量类
class Vector {
public:
double x, y, z;
Vector operator * (Vector& v) {
return Vector(x*v.x, y*v.y, z*v.z);
};
类雷
class Ray {
Vector origin, direction;
public:
Ray();
Ray(Vector, Vector);
Vector getRayOrigin() { return origin; }
Vector getRayDirection() { return direction; }
};
我有飞机课
class Plane {
public:
Vector normal;
double distance;
double Plane::hit(Ray ray) {
Vector rayOrigin = ray.getRayOrigin();
Vector t = normal * rayDirection; // works
Vector tt = normal * ray.getRayOrigin(); // doesn't work
}
我不明白为什么调用 normal * ray.getRayOrigin() 不起作用
错误:二进制表达式“向量”和“向量”的操作数无效
【问题讨论】:
-
ray.getRayOrigin()不返回Vector&,它返回一个Vector,以及一个临时的。将运算符的参数更改为const Vector&(就这一点而言,operator *本身也值得const)。
标签: c++