C++:删除 == 或特定类型的任何其他运算符
C++: Remove == or any other operator for specific types
如果我有一个名为 classA 的 class,它具有 classB 和 classC 的类型转换重载,我如何禁用 == 运算符classA 被输入为 classC?
class classA{
operator classB();
operator classC();
//Remove this comparison possibility:
operator ==(classC firstObject,classC secondObject);
}
跟进这个问题:
定义运算符并使其成为private
。然后,其他人将无法调用它。
在 C++11 中,您可以 delete 方法。
这类似于将方法设为私有。
但是,它表达了程序员的意图并导致更具描述性的编译器错误。
class classA{
operator classB();
operator classC();
//Remove this comparison possibility:
classC operator ==(classC secondObject) = delete;
};
如果我有一个名为 classA 的 class,它具有 classB 和 classC 的类型转换重载,我如何禁用 == 运算符classA 被输入为 classC?
class classA{
operator classB();
operator classC();
//Remove this comparison possibility:
operator ==(classC firstObject,classC secondObject);
}
跟进这个问题:
定义运算符并使其成为private
。然后,其他人将无法调用它。
在 C++11 中,您可以 delete 方法。
这类似于将方法设为私有。
但是,它表达了程序员的意图并导致更具描述性的编译器错误。
class classA{
operator classB();
operator classC();
//Remove this comparison possibility:
classC operator ==(classC secondObject) = delete;
};