想写一个类似stl sort的函数 error C2064
想写一个函数,它里面的某个执行步骤由将来调用它的人来决定。很类似STL的sort函数。
我看了VS2010的sort的源码,它里面用的不是函数指针,而是函数对象(应该是这样吧,没有typedef)
template<class _FunPtr>
void Print(_FunPtr p)
{
vector<int> vt;
vt.resize(10);
for (int i=0;i<vt.size();i++)
{
p(vt[i]);//这里会报error C2064
}
}
class CEdit
{
public:
char* str;
CEdit(const char* _str):str((char*)_str)
{
}
};
class CMyDialog
{
CEdit edit;
void print(int i)
{
cout<<"print at "<<edit.str<<" "<<i<<endl;
}
public:
CMyDialog():edit("MyDlg's Edit")
{
}
void Fun()
{
/*
大家可能注意到了这个写法,这种写法是调用类成员函数的写法,我用sort函数测试过,可行*/
Print(&CMyDialog::print);
}
};
void main()
{
CMyDialog dlg;
dlg.Fun();
}