请教bind2nd和mem_fun的用法
我在实际中遇到一问题:
struct CA
{
virtual void Fun(int& i)
{
// ...
}
};
struct CB : public CA
{
virtual void Fun(int& i)
{ .... }
};
struct CC : public CA
{
virtual void Fun(int& i)
{ .... }
};
int main(int argc, char* argv[])
{
vector<CA*> vecTest;
vecTest.push_back(new CB());
vecTest.push_back(new CC());
int i = 10;
for_each(vecTest.begin(), vecTest.end(), bind2nd(mem_fun(&CA::Fun), i)); // 这行编译通不过
}
在for_each行通不过,把Fun函数的参数改为传值可以通过,但出于效率考虑,必须传引用(实际是类,不单是int),应该咋改呢?谢谢!