如何解决将枚举转换为成员变量[问题] C ++
我正在尝试为与结构中不同枚举值相对应的不同类型的变量创建一个查找。
这是我到目前为止的解决方法:
struct X {
int x;
std::string y;
char z;
enum class MYENUM {
X,Y,Z
};
template<MYENUM TYPE>
auto& GetAttribute() {
if constexpr (TYPE == MYENUM::X) return x;
else if constexpr (TYPE == MYENUM::Y) return y;
else if constexpr (TYPE == MYENUM::Z) return z;
}
};
我正在寻找一个更优雅的解决方案,因为在我的实际项目中,我的结构中有许多不同的变量,因此if / else块变得非常大。
解决方法
也许是这样的
template<MYENUM TYPE>
auto& GetAttribute() {
return std::get<int(TYPE)>(std::tie(x,y,z));
}
(您实际上是在重新发明std::tuple
。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。