关于VC6中使用for_each时遇到的问题,请高人解答一下
确切的说是MFC框架内开发的时候遇到的问题:
class Element
{
...
};
class ViewData
{
public:
vector<Element*> vecpe;
...
};
class CMyView : public CView
{
public:
void show(Element* pe) { // 根据pe所指对象的内部数据在屏幕上画东东 }
void showAll();
private:
ViewData vd;
};
void CMyView::showAll()
{
using namespace std;
for_each(vd.vecpe.begin(),
vd.vecpe.end(),
&CMyView::show); // 该处编译报错:error C2064: term does not
// evaluate to a function
}
...
(我认为这里不应该用mem_fun,因为show并不是Element的成员函数。)
编译错的大意是无法将&CMyView::show解析为一个函数,但是应该是没有问题的啊,而且我查看了VC的<algorithm>文件里的for_each的定义:
// TEMPLATE FUNCTION for_each
template<class _II, class _Fn> inline
_Fn for_each(_II _F, _II _L, _Fn _Op)
{for (; _F != _L; ++_F)
_Op(*_F); // 编译到该步出错
return (_Op); }
但是我觉得没有什么问题,百思不得其解,请大侠指点一下啊!