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

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

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

最佳答案

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

关于c++ - 静态函数输出与普通 fn 输出不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15445572/

相关文章:

c++ - 最小化 boost::spirit 编译时间

c++ - 从继承的类实例调用静态成员

带有静态数组的java空指针异常

抽象父类(super class)中的 c# static 将在子类之间共享?

c++ - 线程间共享类的静态数据

java - 为什么我无法通过实例访问静态内部类

c++ - 访问 vector <Point2f> 中的数组值以及单独的 x 和 y 坐标

c++ - 类中的段错误

c++ - 具有 const 成员的构造函数和匿名 union

c++ - 内联汇编操作数约束