我想填充一组字符串,从具有此类字符串作为属性的类列表中获取(公共getter可用)。
我想使用lambda表达式和std :: for_each。
我在考虑类似的事情:
class Foo
{
const std::string& getMe() const;
}
...
std::list<Foo> foos; // Let's image the list is not empty
std::set<std::string> strings; // The set to be filled
using namespace boost::lambda;
std::for_each(foos.begin(), foos.end(), bind(
std::set<std::string>::insert, &strings, _1::getMe()));
但是,我在编译时遇到了这个错误:
_1不是类或命名空间
感谢。
答案 0 :(得分:1)
这样做的正确方法是:
class Foo
{
public:
const void* getMe() const
{
return this;
}
};
int main()
{
std::list<Foo> foos(10);
std::set<const void*> addresses; // The set to be filled
using boost::bind;
std::for_each(foos.begin(), foos.end(), bind(
&std::set<const void*>::insert, &addresses, bind(&Foo::getMe, _1)));
return 0;
}