zoukankan      html  css  js  c++  java
  • boost的Any库学习

    http://www.stlchina.org/twiki/bin/view.pl/Main/BoostSource_any  ppLiu写的关于这个的文章

    下面是实例代码

    1.

    int main()
    {
        boost::any a;
        a = std::string("aaaa");

        try
        {
            int val = boost::any_cast<int>(a);
            std::cout<<val<<std::endl;
        }
        catch(boost::bad_any_cast& b)
        {
            std::cout<<"error!"<<std::endl;
        }
       
    }

    2.

    #include <iostream>
    #include <string>
    #include <utility>
    #include <vector>
    #include <boost/any.hpp>

    class A
    {
    public:
        void some_function() {std::cout<<"A::some_function()"<<std::endl;}
    };

    class B
    {
    public:
        void some_function() {std::cout<<"B::some_function()"<<std::endl;}   
    };

    class C
    {
    public:
        void some_function() {std::cout<<"C::some_function()"<<std::endl;}
    };

    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 if(C* pC = boost::any_cast<C>(&a))
        {
            pC->some_function();
        }
       
        else
        {
            try
            {
                std::cout<<boost::any_cast<std::string>(a)<<std::endl;
            }
            catch(boost::bad_any_cast& b)
            {
                std::cout<<"Oops!"<<std::endl;
            }
        }

    }

    int main()
    {
        std::vector<boost::any> store_anything;
        store_anything.push_back(A());
        store_anything.push_back(B());
        store_anything.push_back(C());
        store_anything.push_back(std::string("love"));
        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);
    }

    3.

  • 相关阅读:
    MongoDB repair on Ubuntu
    java后台图形相关代码,weblogic报错
    weblogic配置达梦数据源
    详解JavaScript中的this
    web app指南之构建html5离线应用
    android中的跨进程通信的实现(一)——远程调用过程和aidl
    android应用开发全程实录出版
    android窗口管理框架解析
    BizTalk调用SAP系统RFC含多个参数以及DateTime类型参数
    plsql连接64位oracle在windows 764下连接设置方法
  • 原文地址:https://www.cnblogs.com/kex1n/p/2286550.html
Copyright © 2011-2022 走看看