以下代码无法编译:
#include <iostream>
using namespace std;
class A {
int data;
bool (*comparer)(int, int);
bool defaultComparer(int x, int y) {
return x == y;
}
public:
A() {
comparer = defaultComparer;
}
A(bool (*foo)(int, int)) {
comparer = foo;
}
};
bool myfunc(int a, int b) {
return a == b;
}
int main()
{
A obj(myfunc);
}
编译错误是:
11:12: error: cannot convert 'A::defaultComparer' from type 'bool (A::)(int, int)' to type 'bool (*)(int, int)'
comparer = defaultComparer;
^
我的代码有什么问题?从comparer
分配defaultComparer
是错误的吗?如果是,那我该怎么办呢?
这与“Function pointer to member function”不同,因为我不想更改comparer
的类型。