我有以下类声明:

class DepthDescriptor
{
public:
    DepthDescriptor(DepthType depth);
    bool operator==(DepthDescriptor& type);
    bool operator>=(DepthDescriptor& type);
    bool operator<=(DepthDescriptor& type);
...
}


为什么以下行不执行对DepthDescriptor对象的隐式转换,以便可以进行运算符比较?

if (depth == Depth_8U)
{
...
}


请注意,depthDepthDescriptor对象,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;

08-04 18:18