我有两个C ++ - A和B类,由于各种原因我无法改变。但是,我希望能够定义乘法a*a
和a*a
。 (将A视为旋转矩阵,将b视为向量)。我当然可以定义一个mult(const A& a, const B& b)
,但如果我有像a*a'*b
这样的表达式,那就不可读了。
有没有办法在不更改代码的情况下为这些类重载* -operator?
(如果这不可能,是否曾讨论过将此功能添加到该语言中?)
答案 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)
但除非类为其提供访问者,否则您将无法修改类的任何私有成员