soulwzy 发表于 2013-2-4 22:23:35

初学boost::any的测试代码

#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";       }}
页: [1]
查看完整版本: 初学boost::any的测试代码