for_each问题

rickerliang 2006-04-15 03:43:23
我想把成员函数作为for_each的第三个参数传入,编译不通过,代码如下:
class Test
{
private:
int i[10];

typedef void (Test::*pFunc)(int);

void printValue(int value)
{
cout<<value<<endl;
}
public:
Test()
{
int tmp = 0;
fill(i,i+10,tmp);
}
void display()
{
pFunc pf = &Test::printValue;
for_each(i,i+10,(this->*pf));
//问题在这里,32 C:\Dev-Cpp\project\1\main.cpp invalid use of non-static member function
}
};
请教高手如何解决
...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickerliang 2006-04-17
  • 打赏
  • 举报
回复
cunsh 2006-04-16
  • 打赏
  • 举报
回复
用非静态成员函数就需要两个参数了

class Test
{
private:
int i[10];

typedef void (Test::*pFunc)(int);

void printValue(int value)
{
cout<<value<<endl;
}
public:
Test()
{
int tmp = 0;
fill(i,i+10,tmp);
}
void display()
{
pFunc pf = &Test::printValue;
for_each(i,i+10,
bind1st(mem_fun(pf), this ) //将this绑定到第一个参数
);
}
};

int main() {
Test x;
x.display();
cin.get();
}
GaoXX 2006-04-16
  • 打赏
  • 举报
回复
顶一下
rickerliang 2006-04-15
  • 打赏
  • 举报
回复
就是啦,为什么要用static啊?不能用非静态成员函数吗?
cunsh 2006-04-15
  • 打赏
  • 举报
回复
class Test
{
private:
int i[10];

typedef void (*pFunc)(int);

static void printValue(int value)
{
cout<<value<<endl;
}
public:
Test()
{
int tmp = 0;
fill(i,i+10,tmp);
}
void display()
{
pFunc pf = &Test::printValue;
for_each(i,i+10,pf);
//问题在这里,32 C:\Dev-Cpp\project\1\main.cpp invalid use of non-static member function
}
};

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧