這是我精簡的程序,我試圖使用函數變量在運行時修改類功能。所以 - 我聲明使用std::function
模板和與兼容簽名函數myFunc
成員變量m_func
:如何將成員函數賦值給使用std :: function定義的成員變量?
#include <functional>
#include <iostream>
struct T
{
T():m_func([](int){return true;}) {}
void assign() {m_func = &T::myFunc;} // <======== Problem is here
void call(int M) const {std::cout << m_func(M) << std::endl;}
private:
bool myFunc(int N) {return (N >= 4);}
using func = std::function<bool(int)>;
func m_func;
};
int main()
{
T t;
t.assign();
t.call(6);
}
但是,編譯器(克++ 4.8.4與-std = C++ 11選項)給我一個錯誤長輸出,說template argument deduction/substitution failed
和更多...
爲什麼我不能將myFunc
函數分配給m_func
變量?
@nwp - 我不會介意你是否關閉它...謝謝 – HEKTO