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函数,而不仅仅是没有附加参数的普通函数。