我有一个通用的函数,我正在使用List类中的某些对象进行排序。函数指针和继承
该函数工作得很好,但是当我想使用函数指针将该函数应用于类中的成员函数时,它不会生成。
的功能是:
template <typename T1, typename T2, typename T3>
void DialogFaitListing::trie(T1 * list, T2 (T1::*fx)(quint16), T3 (T2::*crit)())
{
for(int i(0);i<list->count();i++)
{
for(int j(i);j<list->count();j++)
{
if((((list->*fx)(i)).*crit)() > (((list->*fx)(j)).*crit)())
{
list->swap(i,j);
}
}
}
}
其中列表是包含对象的列表类,FX是函数指针访问对象和爆击是用于排序的对象的比较函数。
当我建立使用这一行:
trie(vend,&Vendeurs::getVend,&Vendeur::getNom);
我得到这个错误:
dialogfaitlisting.cpp:459: erreur : no matching function for call to
'DialogFaitListing::trie(Vendeurs*&, Vendeur (Vendeurs::*)(quint16),
QString (Personne::*)())'
PS:对不起,我的英语不好
你是[三星程序员](http://c2.com/cgi/wiki?ThreeStarProgrammer)?让事情变得简单! – Lol4t0
您需要提供一个更简单,更完整的示例。例如,如果没有看到如何声明模板类,就不可能知道所有可能的错误。此外,在这里执行特里并不重要;它只会增加噪音。尝试将您的代码缩小到仍然产生错误的最小示例,并发布整个结果(可能在单个.cpp文件中有10行左右)。 – phord