gpt4 book ai didi

c++ - 有没有办法将枚举自动序列化为 int?

转载 作者:太空狗 更新时间:2023-10-29 23:48:05 25 4
gpt4 key购买 nike

有没有办法将枚举自动序列化为 int?每次我定义一个新的枚举并写

std::stringstream stream;
stream << myenum1;
stream >> myenum2;

编译器提示运算符 << 和 >> 没有定义。您知道告诉编译器将枚举视为普通 int 的方法吗?

使问题变得更难的是,序列化实际上是在模板中进行的。像这样:

template <typename T>
void serialize(const T& value)
{
std::stringstream stream;
stream << value;
}

所以我不能添加任何 Actor :(也许我可以以某种方式专门化它?

谢谢。

最佳答案

您可以通过 boost 的 TypeTraits ( is_enum ) 查看类型是否为枚举。

然后你可以将它与 enable_if/disable_if 结合起来:

template <class T>
typename boost::disable_if<boost::is_enum<T> >::type serialize(const T&);

template <class T>
typename boost::enable_if<boost::is_enum<T> >::type serialize(const T&); //use casts here

但是,无法检查给定值对于给定枚举是否有效(除非您为给定枚举类型编写特定重载)。

关于c++ - 有没有办法将枚举自动序列化为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com