静态函数输出与普通fn输出不同

时间:2013-03-16 04:27:55

标签: c++ static-members

当我使用

static int CompareFunction(const void* _g1, const void* _g2);

qsort的输入是正确的

但使用

int CompareFunction(const void* _g1, const void* _g2);

qsort的输入错误。而错误是: error: argument of type 'int (<namespace>::<ClassName>::)(const void*, const void*)' does not match '__compar_fn_t {aka int (*)(const void*, const void*)}'

静态如何以这种方式改变行为?我的意思是我所做的只是将类中的函数更改为静态,这意味着它现在缺少此指针。我没有更多的改变。

2 个答案:

答案 0 :(得分:1)

静态成员函数是常规函数,但非静态成员函数是不同的。需要额外隐藏&#34;这个&#34;参数是产生差异的原因。

答案 1 :(得分:1)

只能在对象的实例上调用非静态函数。没有对象的实例可以在qsort内调用该函数(它只有它认为是不透明的指针),所以它不能调用成员函数。