std-function

    1熱度

    2回答

    我想將不同類型的函子傳遞給一個方法。因此我認爲應該使用std :: function。但是,由於此方法還應存儲對函數對象的引用,所以我想要傳遞shared_ptr(用於生命週期管理)。下面的代碼適用於B類(b.run(...)),但無法編譯爲A類(a.run(...)break)。 當傳遞一個指針而不是函數對象本身時,這個轉換問題的原因是什麼,我該如何繞過它? #include <function

    0熱度

    2回答

    我試圖創建對象之間的通信系統,其中的控制器對象保持的其它對象的成員函數的向量,並調用調用來自另一個對象的構件/所調用他們需要時。 我讀了幾篇關於使用std::function的文章,但是我找不到涵蓋這個用例的文章。 我的代碼是: #include <functional> #include <Windows.h> class Callable { }; class ClassA :

    9熱度

    2回答

    我正在玩std :: function和std :: bind的arround,我發現了一些不直觀的東西,我想更好地理解它。 例如: void fun() { } void hun(std::string) { } int main() { function<void(int)> g = &fun; //This fails as it should in my un

    6熱度

    1回答

    我想知道是否有任何方法來檢查您分配到std::function的函數指針是否爲nullptr。我期待!操作員這樣做,但它似乎只有在函數被分配了nullptr_t類型的東西時才起作用。 typedef int (* initModuleProc)(int); initModuleProc pProc = nullptr; std::function<int (int)> m_pInit;

    4熱度

    1回答

    我想將函子的賦值封裝到std :: function中。我不得不傳遞std :: function或指向std :: function的指針,而必須傳遞從通用抽象類Slot繼承的函子(即這些插槽提供附加功能)。 我偶然發現了不同形狀的這個問題here。例如。在那裏,使用通用槽的指針而不是std:functions的動機是函子的生命週期管理。 下面的代碼說明了這個問題。請參閱assignFuncto

    1熱度

    1回答

    我在使用C++ 11和VS2010的代碼中使用std::function()。這是我的代碼。 function<string (string)> myfunc = 3; myfunc(string()); 很明顯,該代碼不正確,對於myfunc對象未得到正確初始化。 myfunc對象應該由除整數類型之外的function<string (string)>對象進行估價。當運行代碼myfunc(

    11熱度

    2回答

    我理解函數類型的問題(例如它們顯示爲std::function的Signature模板參數): typedef int Signature(int); // the signature in question typedef std::function<int(int)> std_fun_1; typedef std::function<Signature> std_fun_2; sta

    0熱度

    2回答

    我剛剛開始使用JavaScript V8並編譯了一個基本示例,來自Embedder's Guide。現在我想將C++函數綁定到JavaScript上下文。 現在我只有一個或多或少的空白類,應該稍後處理綁定。 class Manager { public: Manager() { context = Context::New(); } void

    3熱度

    2回答

    由於我的last recent question是不幸的措詞,導致解決另一個問題,那麼我將在這裏嘗試以一種明確的方式闡明我的實際問題。 在我們開始之前,作爲一個旁註,我將Javascript Engine V8集成到我的C++應用程序中。這就是示例中所有類型的來源。這也是我最終需要一個原始函數指針的原因。但我在下面詳細說明。 從類內部我需要將捕獲子句[=]的lambda表達式作爲std::func

    1熱度

    1回答

    很簡單,這段代碼有什麼問題? typedef std::function<double()> Event; typedef std::tuple <double, std::function<double()>> Event_handle; std::multiset <Event_handle> event_multiset; std::vecto