为具有固定代码的类实现'*' - 运算符

时间:2016-02-09 18:41:42

标签: c++ operator-overloading

我有两个C ++ - A和B类,由于各种原因我无法改变。但是,我希望能够定义乘法a*aa*a。 (将A视为旋转矩阵,将b视为向量)。我当然可以定义一个mult(const A& a, const B& b),但如果我有像a*a'*b这样的表达式,那就不可读了。

有没有办法在不更改代码的情况下为这些类重载* -operator?

(如果这不可能,是否曾讨论过将此功能添加到该语言中?)

2 个答案:

答案 0 :(得分:2)

您可以像operator*()一样定义全局mult()功能:

const B& operator*(const A& a, const B& b) {
    // code goes here
}

答案 1 :(得分:2)

如果您根本无法更改课程,您仍然可以编写全球operator*

B operator*(const A& a, const B& b)

但除非类为其提供访问者,否则您将无法修改类的任何私有成员