C++:删除 == 或特定类型的任何其他运算符

标签 c++ class operator-overloading operators equals-operator

如果我有一个名为 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

最佳答案

在 C++11 中,您可以 delete方法。
这类似于将方法设为私有(private)。
但是,它表达了程序员的意图并导致更具描述性的编译器错误。

class classA{
   operator classB();
   operator classC();

   //Remove this comparison possibility:
   classC operator ==(classC secondObject) = delete;
};

关于C++:删除 == 或特定类型的任何其他运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38031684/

相关文章:

c++ - Apple 的 Using C++ with Objective-C 文章不见了...谁能给我一篇新文章,或者帮我找到旧文章?

c++ - 在 const 迭代器上调用成员函数

c++ - 将 operator<< 与 const 对象一起使用

c++重载下标运算符的两个版本

c++ - new Object() 和 Object() 有什么区别

c++ - ostream 必须只接受一个参数

c++ - 错误 LNK2020 : unresolved token (06000002) in Visual C++

c++ - 如何提高计算 float 的精度?

python - 2D fft - 空虚部

testing - 关于出于测试目的存在于类中的 Watir 问题