所以我有一個任務要求我使用隨機快速排序,並發現使用函數指針的問題。C++函數指針;沒有匹配的功能
排序功能是rqs.cpp
:
template <typename Item_Type>
void rqs_with_range(std::vector<Item_Type> &vec, int p, int q,
int (*cmp)(Item_Type, Item_Type));
然後在我的cpp文件,我有這樣的事情:
class Table{
constructor....
vector< vector<string>* >* holder; // table
int compare_str(vector<string>* a, vector<string>* b) {
return a->at(compare_column) < b->at(compare_column) ? -1 :a->at(compare_column) == b->at(compare_column) ? 0 : 1;
}
void rqs{
rqs_with_range((*holder) , 1, int(holder->size()-1), &Table::compare_str);
}
}
編譯器說,我在功能rqs
有錯誤,沒有匹配的功能。我的比較函數是Table的成員函數,會不會是問題的原因?
成員函數不是函數,指向成員函數不是函數指針。搜索這個網站,因爲這已經被問過一百萬次了。 – 2012-03-03 18:07:19