【发布时间】:2026-01-18 03:25:01
【问题描述】:
如果我有一个名为 classA 的类具有 classB 和 classC 的类型转换重载,我如何禁用 == 运算符以将 classA 键入为 classC?
class classA{
operator classB();
operator classC();
//Remove this comparison possibility:
operator ==(classC firstObject,classC secondObject);
}
从这个问题继续:
Ambiguous overload when using many typecasts operator overloads
【问题讨论】:
-
明确 operatorB 和 operatorC?这不是一个完整的例子。你能发布一个最小的、完整的例子吗?
-
您的代码将无法工作,这不仅仅是因为缺少
;。你在那里有一种三元运算符。operator==如果是成员则需要一个参数,如果是非成员则需要 2 个参数。 ...正如上面的评论所说,让我们得到一个minimal reproducible example,这样我们就可以看到你到目前为止所做的尝试,以及什么不起作用。
标签: c++ class operator-overloading operators equals-operator