我正在寻找一种替代C语言风格联合的方法。boost::variant是一个选择。在std C++中有类似的东西吗?
union {
int i;
double d;
}
我正在寻找一种替代C语言风格联合的方法。boost::variant是一个选择。在std C++中有类似的东西吗?
union {
int i;
double d;
}
正如一些评论所说:没有标准C++中类似于Boost Variant的东西。也许几年后会有,但为什么要等待——今天就使用Boost Variant吧!
编辑(四年后,2016年):在C++17中将会有std::variant
。与boost::variant
类似但并不相同。因此,当你的编译器支持C++17时,你将拥有一个标准库中的解决方案。
std::variant
,http://en.cppreference.com/w/cpp/utility/variant - TimZamanstd::variant
现在正式成为C++17标准库的一部分!https://herbsutter.com/2016/06/30/trip-report-summer-iso-c-standards-meeting-oulu/
std
标准库。 - Mooing Duckboost::variant
是一个仅包含头文件的库,因此如果您仅使用boost::variant
,则无需担心构建/链接Boost库。只需确保将指向Boost头文件的路径包含在您的项目/IDE/makefile中即可。 - Emile Cormier