|
Boost Users : |
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/
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net