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

时间:2016-06-25 18:29:31

标签: 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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

定义运算符并使其成为private。然后,没有其他人可以打电话给它。