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

static function output varies from ordinary fn output

本文关键字:输出 fn 不同于 静态函数      更新时间:2023-10-16

使用

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*)}'

静态如何以这种方式改变行为?我的意思是,我所做的只是将类中的函数更改为静态,这意味着它现在缺少这个指针。我不会再做任何改变了。

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

静态成员函数是常规函数,而非静态成员函数则有所不同。