#include <iostream>
#include <string>
#include <utility>
#include <vector>
#include "boost/any.hpp"
class A
{
public:
void some_function()
{
std::cout << "A::some_function()\n";
}
};
class B
{
public:
void some_function()
{
std::cout << "B::some_function()\n";
}
};
void print_any(boost::any& a)
{
if (A* pA=boost::any_cast<A>(&a))
{
pA->some_function();
}
else if (B* pB=boost::any_cast<B>(&a))
{
pB->some_function();
}
else
{
try
{
std::cout << boost::any_cast<std::string>(a) << '\n';
}
catch(boost::bad_any_cast&)
{
std::cout << "Oops!\n";
}
}
}
int main()
{
std::cout << "Example of using any.\n\n";
std::vector<boost::any> store_anything;
store_anything.push_back(A());
store_anything.push_back(B());
// 我们再来,再加一些别的东西
store_anything.push_back(std::string("This is fantastic! "));
store_anything.push_back(3);
store_anything.push_back(std::make_pair(true, 7.92));
std::for_each( store_anything.begin(), store_anything.end(), print_any);
std::cout << "Example of using any member functions\n\n";
boost::any a1(100);
boost::any a2(std::string("200"));
boost::any a3;
std::cout << "a3 is ";
if (!a3.empty())
{
std::cout << "not empty\n ";
}
std::cout << "empty\n";
a1.swap(a2);
try
{
std::string s=boost::any_cast<std::string>(a1);
std::cout << "a1 contains a string: " << s << "\n";
}
catch(boost::bad_any_cast& e)
{
std::cout << "I guess a1 doesn't contain a string!\n";
}
if (int* p=boost::any_cast<int>(&a2))
{
std::cout << "a2 seems to have swapped contents with a1: " << *p << "\n";
}
else
{
std::cout << "Nope, no int in a2\n";
}
if (typeid(int)==a2.type())
{
std::cout << "a2's type_info equals the type_info of int\n";
}
}
分享到:
相关推荐
不一下子应用MFC等界面,以直观易懂的控制台程序展现网络编程“服务端”-“客户端”是怎么运行的。最适合初学者。
Delphi Access数据库初学实例:通讯录程序的源代码,只是用最基础的Delphi数据库操作技巧,实现通讯录功能数据的添加、删除、修改等,并运用于网格来显示读取的内容,适合Delphi新手或初学者作为学习参考。
初学推荐:LCD、LED与OLED的区别pdf,
详细的描述了boost.asio是什么有什么作用,怎么学习boost,是初学者的福音,由浅入深。重点讲述了网络编程这块
VC初学例子:窗口最小化与最大化的实现,简单的不能再简单的小例子,用代码实现窗体的最大化、最小化、恢复窗口,面向VC入门级程序员的一个小例子,高手跳过哦。
适合初学者使用的测试代码
这是学习JAVA的学习过程文件,一些测试实例和代码
python 初学教程,关于python入门的知识
描述软件测试的基本概念,基本原理,基本知识,为初学者提供快速学习软件测试的概览.
SQL代码:包含已经设计好的表创建代码和数据插入代码,纯手打,每条语句测试能用,供初学者SQL实践使用,希望能够帮助大家学习。
初学者java代码 初学Java需要掌握的最基础的代码:
java初学者项目:太阳系模型源代码 本项目适用于初学者,主要用来帮助初学者学习练习java中awt的一些内容,但最重要的是通过本项目让初学者接触到oop即面向对象程序设计和相似代码的封装
本文面向软件测试新手,从测试前的准备工作、测试需求收集、测试用例设计、测试用例执行、测试结果分析几个方面给出建议和方法。鉴于国内的软件开发、测试不规范的现状,本文为软件测试新手提供了若干个软件测试的...
C-CrashCourse:C语言教程+博客+代码演示+课程设计。帮助初学者更好的理解C难点,提升代码量!对于初学者:C学费自学
非常多的JAVA初学者测试简单小程序非常多的JAVA初学者测试简单小程序非常多的JAVA初学者测试简单小程序非常多的JAVA初学者测试简单小程序非常多的JAVA初学者测试简单小程序非常多的JAVA初学者测试简单小程序非常多的...
渗透测试实践指南:必知必会的工具与方法,适合初学者学习的书籍
C#窗体程序初学示例代码,适合初学者,高手可以忽略。
文章资源:Android Studio初学者实例:仿拼多多砍价页面
VERILOG基础程序例程 基础教程 初学代码 FPGA测试VERILOG源码,包括大量的设计实例,逻辑源码, 可以做为你的学习参考。