如果我有一个名为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方法。
这类似于将方法设为私有。
但是,它表达了程序员的意图,并导致更具描述性的编译器错误。

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

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

10-06 01:27