8

我有一个要迭代的指针容器,调用一个成员函数,该函数的参数是引用。我如何用 STL 做到这一点?

我目前的解决方案是使用 boost::bind 和 boost::ref 作为参数。

// Given:
// void Renderable::render(Graphics& g)
//
// There is a reference, g, in scope with the call to std::for_each
//
std::for_each(
  sprites.begin(),
  sprites.end(),
  boost::bind(&Renderable::render, boost::ref(g), _1)
);

一个相关的问题(我从中得出了我当前的解决方案)是boost::bind 与具有引用参数的函数。这特别询问如何使用 boost 来做到这一点。我问的是如何在没有提升的情况下完成。

编辑:有一种方法可以在不使用任何boost. 通过使用std::bind和朋友,可以在 C++11 兼容的编译器中编写和编译相同的代码,如下所示:

std::for_each(
  sprites.begin(),
  sprites.end(),
  std::bind(&Renderable::render, std::placeholders::_1, std::ref(g))
);
4

1 回答 1

5

这是设计的问题<functional>。您必须使用 boost::bind 或 tr1::bind。

于 2009-03-12T06:09:43.807 回答