使用固定代码实现 类 的“*”运算符
Implement '*'-operator for classes with fixed code
我有两个 C++-类 A 和 B,由于各种原因我无法更改。但是,我希望能够定义乘法 a*a
和 a*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)
但是您将无法修改 类 的任何私有成员,除非 类 为它们提供访问者
我有两个 C++-类 A 和 B,由于各种原因我无法更改。但是,我希望能够定义乘法 a*a
和 a*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)
但是您将无法修改 类 的任何私有成员,除非 类 为它们提供访问者