$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: ÑîÁô°² (liuansharp_at_[hidden])
Date: 2008-01-17 10:39:52
here I have some class to test the boost::any_cast,usually I use intel compiler 10.0,but I got a message the application must be close.
but the ms vc 8.0 compiler works well.
My operator is windows xp,and I use vs2005 with inter compiler 10.0
here is my code:
-----------------------------------------------------------------------------------------------------------------------------------------
class CA{public: void tellme() {  cout<<"I am ca"<<endl; }};
 
class CB{public: void tellme() {  cout<<"I am cb"<<endl; }};
 
class CC{public: void tellme() {  cout<<"I am cc"<<endl; }};
 
class dotellme{public: void operator()(boost::any& ra) {  if(CA* p = boost::any_cast<CA>(&ra))  {   p->tellme();  }  else if (CB* p = boost::any_cast<CB>(&ra))  {   p->tellme();  }  else if (CC* p = boost::any_cast<CC>(&ra))  {   p->tellme();  }  else if(string* p = boost::any_cast<string>(&ra))  {   cout<<*p<<endl;  }  else  {   int a;   try   {    a = boost::any_cast<int>(ra);    cout<<"it's int:"<<a<<endl;   }   catch (boost::bad_any_cast& e)   {    cout<<"OOPS"<<endl;   }  } }};
 
//void tellme(boost::any& ra)//{// dotellme()(ra);//}int _tmain(int argc, _TCHAR* argv[]){ vector<boost::any> va; va.push_back(CA()); va.push_back(CB()); va.push_back(CC()); va.push_back(string("haha,it a string")); va.push_back(dotellme()); va.push_back(5); dotellme dt; for_each(va.begin(),va.end(),dotellme()); va.clear(); return 0;}
_________________________________________________________________
ÊÖ»úÒ²ÄÜÉÏ MSN ÁÄÌìÁË£¬¿ìÀ´ÊÔÊÔ°É£¡
http://mobile.msn.com.cn/