我有以下类声明:
class DepthDescriptor
{
public:
DepthDescriptor(DepthType depth);
bool operator==(DepthDescriptor& type);
bool operator>=(DepthDescriptor& type);
bool operator<=(DepthDescriptor& type);
...
}
为什么以下行不执行对
DepthDescriptor
对象的隐式转换,以便可以进行运算符比较?if (depth == Depth_8U)
{
...
}
请注意,
depth
是DepthDescriptor
对象,DepthType
是枚举,并且Depth_8U
是枚举值之一。我希望上面的代码行先调用隐式构造函数DepthDescriptor(DepthType depth)
,然后调用适当的运算符,但我得到的是no operator "==" matches these operands
。 最佳答案
尝试
bool operator==(const DepthDescriptor& type) const;
bool operator>=(const DepthDescriptor& type) const;
bool operator<=(const DepthDescriptor& type) const;