[英]Can std::function be a class data member?
我有簡單的以下代碼:
template<class R, class... Args> class CallBack {
protected:
std::function<R(Args...)> myFunc;
public:
CallBack(std::function<R(Args...)> funcIn) : myFunc(funcIn) {}
virtual ~CallBack() {}
R call(Args... args) {
return myFunc(args...);
}
};
int main() {
std::function<int(int,int)> tmp = [](int y, int z){return y + z + 2;};
CallBack<int(int,int)> x(tmp);
std::cout << x.call(12, 7);
return 0;
}
但是,它根本不起作用。 我得到:
../src/main.cpp:17:28: error: function returning a function
std::function<R(Args...)> myFunc;
^
我檢查了std :: function的原型,它是一個簡單的類,所以為什么不能將其用作我的類CallBack
的屬性?
在我的主語言中,我可以實例化std::function<int(int,int)>
類型的對象,所以有什么區別? 它們對std::function
特殊限制嗎?
您的語法錯誤。 在定義template<class R, class... Args> class CallBack
- R
匹配int(int,int)
且Args...
為空。
如果您確實需要CallBack
此簽名,則必須執行以下操作:
CallBack<int,int,int> x(tmp);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.