我想为我的班级创建一个比较函数(cmp)。如果构造函数具有一个函数参数,则很好。如果不是,我想为其设置默认值,有什么想法吗?
下面是我的代码,
template<class T>
class BinaryHeap{
public:
BinaryHeap();
explicit BinaryHeap(bool (*cmp)(T, T));
private:
bool (*cmp)(T ele_a, T ele_b); // function pointer
bool default_cmp(T ele_a, T ele_b);
};
template<class T>
BinaryHeap<T>::BinaryHeap() {
//the code bellow is not work;
this->cmp = default_cmp; // there is problem
}
template<class T>
BinaryHeap<T>::BinaryHeap(bool (*cmp)(T, T)) {
heap_size = 0;
this->cmp = cmp; // this is ok for the compiler
}
答案 0 :(得分:3)
只需更改此
bool default_cmp(T ele_a, T ele_b);
对此
static bool default_cmp(T ele_a, T ele_b);
常规成员函数与函数指针不兼容,但是静态成员函数与之兼容。