Win 7 Cygwin GCC 4.8.3 -std = гну ++ 11Как передать функцию в качестве параметра
Я исследовал это на StackOverflow и cplusplus и подумал, что я принял функцию как параметр правильно, даже «изящно», но ясно, что я что-то не понял. Может ли кто-нибудь объяснить, как правильно передать функцию в качестве аргумента, и почему то, что у меня есть, не будет работать?
Предусмотрено одно предупреждение для прототипа и единственная ошибка для вызова. Изменение genX в genY в комментариях, но как genX, так и genY имеют одинаковые предупреждения/ошибки.
class MyClass {
typedef double (*func_t)(double sum);
void driver();
double genX(func_t fnc) { };
double genY(double (*funct)(double sum)) { };
// note: no known conversion for argument 1 from
// '<unresolved overloaded function type>' to
// MyClass::func_t {aka double (*)(double)}
double myThingie(double sum) { };
};
void MyClass::driver() {
genX(myThingie);
genY(myThingie);
// no matching function for call to 'MyClass::genX(<unresolved overloaded function type>)'
}
Я думаю, что этот ответ не сразу ответить на вопрос. Проблема в том, что функция Op передается, поскольку аргумент является методом экземпляра и имеет неявный первый параметр –