Win 7的 cygwin的 GCC 4.8.3 -std = GNU ++ 11我如何通過一個函數作爲參數
我研究這個計算器上和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正在傳遞,因爲參數是一個實例方法,並且具有隱含的第一參數 –