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.

  • 相关阅读:
    java中equals与hashCode的重写问题
    关于java的二维码的生成与解析
    bootstrap的时间控件使用(双日历)
    Mysql表,列,库的增删查改
    关于js重名方法的先后调用问题
    javascript的比较运算符
    javascript的运算符
    JavaScript的数据类型
    javascript的基本语法
    MAP集合
  • 原文地址:https://www.cnblogs.com/kex1n/p/2286550.html
Copyright © 2011-2022 走看看