簡體   English   中英

std :: function可以成為類數據成員嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM