<>操作数为BOOST_SCOPED_ENUM

时间:2019-05-14 17:35:09

标签: c++ boost enums

我有一个BOOST_SCOPED_ENUM,如下所示


#ifndef DOXYGEN_NO_DETAIL
namespace detail { namespace wkb
{

BOOST_SCOPED_ENUM_START(byte_order)
{
    xdr     = 0, // wkbXDR, bit-endian
    ndr     = 1, // wkbNDR, little-endian
    unknown = 2  // not defined by OGC
};
BOOST_SCOPED_ENUM_END

}} // namespace detail::wkb
#endif // DOXYGEN_NO_IMPL

}} // namespace boost::geometry

#endif // BOOST_GEOMETRY_EXTENSIONS_GIS_IO_WKB_DETAIL_OGC_HPP

我想将其与>操作数一起使用,因为该枚举是整数。 这是我的代码

boost::uint8_t value;
if (value_parser<boost::uint8_t>::parse(it, end, value, byte_order::unknown))
{
    if (byte_order::unknown > value)
    {
        order = (0 == value ? byte_order::xdr : byte_order::ndr);
        return true;
    }
}

但是我在编译时不断收到此错误

error: no match for ‘operator>’ (operand types are ‘boost::geometry::detail::wkb::byte_order’ and ‘uint8_t {aka unsigned char}’)
             if (byte_order::unknown > value)
                 ~~~~~~~~~~~~~~~~~~~~^~~~~~~

似乎我必须强制转换对象,但找不到任何强制转换的方法。是否有任何方法将此enum强制转换为uint8_t? 非常感谢

0 个答案:

没有答案