boost的Any库学习

    技术2022-05-12  1

    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.

     

     

     


    最新回复(0)