我有一个typedef boost::variant<int, float, double, long, bool, std::string, boost::posix_time::ptime> variant用于在结构中存储不同类型的值的.只有一个特定类型将存储在该结构中,但是我有一个这些结构的向量,我需要通过该向量并从变量中获取实际类型.
现在,当我需要进行转换时,我会这样做:
variant second = mystruct.variant;
if (second.which() == 5) //string
{
std::string val = boost::get<std::string>(second);
modvalue->AddNodeAttribute(key, val);
}
else if (second.which() == 0) //int
{
int val = boost::get<int>(second);
modvalue->AddNodeAttribute(key, val);
}
else if (second.which() == 2) //double
{
double val = boost::get<double>(second);
modvalue->AddNodeAttribute(key,val);
}
else if (second.which() == 1) //float
{
float val = boost::get<float>(second);
modvalue->AddNodeAttribute(key, val);
}
else if (second.which() == 3) // long
{
long val …Run Code Online (Sandbox Code Playgroud)