Я пытаюсь получить значение int из boost :: variant. Код генерирует ошибку сегментации - почему? Я помещал комментарии в код, строки которых генерируют ошибку. Я полагал, чтоПолучить int from boost :: variant generate segmentation fault
int numberInt = boost::get<int>(v);
не будет работать правильно, поэтому я изменил его
int *ptrInt = boost::get<int>(&v);
который компилирует, но до сих пор я не удалось получить значение INT? Точно так же и с двойным. Строковый тип работает.
#include <iostream>
#include "boost/variant.hpp"
#include <boost/variant/get.hpp>
using namespace std;
int main(int argc, char* argv[])
{
boost::variant<int, double, std::string> v;
v = 16;
v = 3.1415;
v = "hello new year";
//int numberInt = boost::get<int>(v); //1) not working
//double numberDouble = boost::get<double>(v);//2) not working
int *ptrInt = boost::get<int>(&v); //3) compiling
if(ptrInt)
cout << *ptrInt << endl; //4) not displayed
//cout << *ptrInt << endl; //5) segmentation fault
double *ptrDouble = boost::get<double>(&v); //6) compiling
if(ptrDouble)
cout << *ptrDouble << endl; //7) not displayed
//cout << *ptrDouble << endl; //8) segmentation fault
std::string caption = boost::get<string>(v);
cout << caption << endl; //9) working
return 0;
}
// clear && clear && g++ test.cpp -std=c++11 -o test && ./test