• 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.

  • 相关阅读:
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    适合 C++ 新手学习的开源项目——在 GitHub 学编程
    【9303】平面分割
    【u114】旅行计划(12月你好)
    【u236】火炬
    【u233】单词化简
    Java Web整合开发(41) -- Forum
    1、服务器(软件)种类
    jquery trigger
    jQuery实现当按下回车键时绑定点击事件
  • 原文地址:https://www.cnblogs.com/kex1n/p/2286550.html
Copyright © 2020-2023  润新知