Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 静态功能输出与普通fn输出不同_C++_Static Members - Fatal编程技术网

C++ 静态功能输出与普通fn输出不同

C++ 静态功能输出与普通fn输出不同,c++,static-members,C++,Static Members,当我使用 static int CompareFunction(const void* _g1, const void* _g2); qsort的输入是正确的 但是使用 int CompareFunction(const void* _g1, const void* _g2); qsort的输入错误。错误是: 错误:类型为“int(:)(const void*,const void*)”的参数与“\uu compar\u fn\u t{aka int(*)(const void*,const

当我使用

static int CompareFunction(const void* _g1, const void* _g2);
qsort的输入是正确的

但是使用

int CompareFunction(const void* _g1, const void* _g2);
qsort的输入错误。错误是:
错误:类型为“int(:)(const void*,const void*)”的参数与“\uu compar\u fn\u t{aka int(*)(const void*,const void*))不匹配”


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

静态成员函数是常规函数,而非静态成员函数则有所不同。需要额外隐藏“this”参数才是区别所在。

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

如果您的比较器需要访问类的某些部分,请尝试
std::sort
而不是
qsort
。这将为您提供更大的灵活性,因为您可以使用函子或lambda函数,而不仅仅是没有附加参数的普通函数。