首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

Boost:bind疑义

2012-08-10 
Boost:bind疑问class status {std::string name_bool ok_public:status(const std::string& name):name_

Boost:bind疑问
class status { 
std::string name_;  
bool ok_;
public:  
status(const std::string& name):name_(name),ok_(true) {}  
void break_it() { ok_=false; } 
bool is_broken() const { return ok_; }  
void report() const { std::cout << name_ << " is " << (ok_ ? "working nominally":"terribly broken") << '\n'; }
};


void main()
{

std::vector<status> statuses;
statuses.push_back(status("status 1"));
statuses.push_back(status("status 2"));
statuses.push_back(status("status 3"));
statuses.push_back(status("status 4"));
statuses[1].break_it();statuses[2].break_it();
for (std::vector<status>::iterator it=statuses.begin(); it!=statuses.end();++it) { it->report();}
std::for_each( statuses.begin(), statuses.end(), boost::bind(&status::report,_1));
}

report函数是不需要参数的,foreach那句代码中后面“_1”是什么意思?请高手指点一下!

[解决办法]
楼主还是自己去认真看boost的文档吧,有中文版的。
这是一个神奇的占位符。
[解决办法]
你可以看下bind的源码,就是一个占位符,你不加就编译不过去的,表示

热点排行