我有一個通用的函數,我正在使用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