我有一个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
?
非常感谢