相关疑难解决方法(0)

通常从boost :: variant <T>转换为type

我有一个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)

c++ unions

6
推荐指数
1
解决办法
4947
查看次数

标签 统计

c++ ×1

unions ×1