Пытаюсь передать метод класса в качестве параметра функции для того, чтобы посчитать количество его вызовов:
class Foo {
public:
int operationsAmount = 0;
int values[] = {0, 4, -1, 6, -12, 32};
int compare(const void *a, const void *b) {
++operationsAmount;
return (*(int*)a - *(int*)b);
}
Foo() {
qsort(values, 6, sizeof(int), compare);
}
};
int main() {
Foo foo = new Foo();
}
При попытке скомпилировать это компилятор ругается:
no known conversion for argument 1 from '<unresolved overloaded function type>' to 'int (*)(const void *, const void *)'
Возможно ли в C++ передавать метод класса в качестве аргумента функции? Как правильно сделать то, что я пытаюсь сделать? (пример сферический в вакууме, поэтому счётчик должен оставаться атрибутом класса)
Всё это нужно для того, чтобы у колбека, передаваемого в качестве аргумента функции независимой библиотеке, оставался доступ к атрибутам объекта.