亲爱的,我想为每个对象调用一个成员函数(需要引用)(比方说)一个属于同一个类的成员的向量,如下面的代码所示:
#include <functional>
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
struct Stuff {
double x;
};
class Test {
public:
void f1(Stuff & thing);
void f2(void);
vector<Stuff> things;
};
void Test::f1(Stuff & thing) {
; // do nothing
}
void Test::f2(void) {
for_each(things.begin(), things.end(), f1);
}
int main(void)
{
return 0;
}
此代码给出了与未解析的重载函数类型相关的编译器错误。我也尝试过使用bind,但似乎f1中必需的引用是一个问题。我知道我在这里缺少一些重要的东西,所以我借此机会解决我的问题并学习。目前,我无法安装boost,但我也想知道boost是否有助于解决这个问题。提前致谢。
答案 0 :(得分:4)
f1
简单识别,但应称为&Test::f1
(如:f1
的成员函数Test
< / LI>
f1
不接受单个参数:作为任何非静态成员函数,它具有this
类型的隐式Test * const
参数Boost.Bind确实是一个很好的选择:
std::for_each(things.begin(), things.end(), boost::bind(&Test::f1, this, _1));