您的位置:首页 > 编程语言 > C语言/C++

C++学习 boost学习之-Variant

2015-05-21 10:39 393 查看
用法:

1 他与c语言中的union相对应

2 通过模板参数定义可以支持的类型

3 通过boost::get<T>()进行访问

4 可通过boost::static_visitor与boost::apply_visitor(visitor, variant).的组合来访问

总结,目前还没想到这个有什么很好的用处;

看例子体会用法:

class print_visitor : public boost::static_visitor<void> {

public:

void operator()(int i) const {

std::cout << "It's an int: " << i << '\n';

}

void operator()(std::string s) const {

std::cout << "It's a std::string: " << s << '\n';

}

void operator()(double d) const {

std::cout << "It's a double: " << d << '\n';

}

};

int main() {

boost::variant<int,std::string,double,char>

my_first_variant("Hello there!");

print_visitor v;

boost::apply_visitor(v,my_first_variant);

my_first_variant=12;

boost::apply_visitor(v,my_first_variant);

my_first_variant=1.1;

boost::apply_visitor(v,my_first_variant);

my_first_variant='a';

boost::apply_visitor(v,my_first_variant);

}

还有:

boost::variant<int,std::string,double> my_first_variant;

my_first_variant=24;

my_first_variant=2.52;

my_first_variant="Fabulous!";

my_first_variant=0;

assert(boost::get<int>(my_first_variant)==0);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: