使用固定代码实现 类 的“*”运算符

Implement '*'-operator for classes with fixed code

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

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

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

您可以像 mult():

一样定义全局 operator*() 函数
const B& operator*(const A& a, const B& b) {
    // code goes here
}

如果您根本无法更改 类,您仍然可以编写全局 operator*,例如

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

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