一個std ::功能我一直在使用的std ::功能,使我的課更通用的,而不是把虛擬會員這就需要聲明一個類全新的,我只在一個地方使用,但是我,當它需要序列化課程時,他們很難過。我知道序列化隨機C++代碼的想法不起作用,但那不是我需要做的。我知道這些函數已經存在於同一個二進制文件的其他地方,所以我覺得應該有辦法做到這一點。我並不反對以某種'hacky'的方式做到這一點,儘管最好它可以與gcc和MSVC一起工作序列化從同一個代碼庫
1
A
回答
3
如果您將id或「句柄」映射到可序列化的函數集,並執行此操作以確定性的,編譯時的方式,您可以將句柄序列化爲整數類型。在反序列化/加載時,您可以使用此確定性映射將句柄轉換爲相關的函數指針類型,並從中構建std :: functions。
這不是從序列化/在類反序列化指針如此不同。這種反序列化通常由兩個步驟組成:初始化POD類型,然後在第二遍中修復指針。
0
我們可以序列化一個std ::函數與它的參數,然後將它們歸檔到一個文件中,或者到網絡上,這樣我們就可以調用函數(使用指定參數)之後,我們重新啓動機器,或者更常見的是,在另一臺機器上調用rpc。
這裏是一個例子:
測試代碼: https://github.com/galaxyeye/atlas/blob/master/libs/serialization/test/function.cpp 實施: https://github.com/galaxyeye/atlas/blob/master/atlas/serialization/function.h
用於容易在C++中,這使得程序員使用遠程功能就像一個使用RPC框架本地函數,請參閱我的github上的項目先驅。
我將在下週一前完成它。
例如,如果你想在集羣中的所有機器殺的過程中,你的經理計劃,只是寫:
multicast_client客戶端; client.call(「pkill」,pkill,「a_bad_process」);我們假設服務器端程序執行如下的函數: void pkill(const std :: string & process_name);
希望有幫助:)
相關問題
- 1. 序列化從同一列
- 2. 的Python:從同一個代碼庫
- 3. 序列化Javascript代碼
- 4. 使用[序列化()]代碼
- 5. 從同一個rails代碼庫運行多個站點?
- 6. JavaScript序列化 - 一個短庫
- 7. 是否可以序列化一個C#代碼塊?
- 8. 可以Json.NET序列化/反序列化到/從一個流?
- 9. 序列化和反序列化的Clojure代碼EDN
- 10. 我的PHP代碼序列化,但不反序列化
- 11. 不同線程之間的代碼塊序列化
- 12. 如何序列化/反序列化生成的WCF代理代碼?
- 13. 序列化與C#代碼錯誤
- 14. 爲xml序列化生成代碼
- 15. 序列化與字節代碼轉換
- 16. c#序列化中的方法代碼
- 17. AS3對象序列化(至AS3代碼)
- 18. BinaryFormatter反序列化惡意代碼?
- 19. 如何序列化爲C#代碼?
- 20. c#序列化多個1列表在同一個xml文件
- 21. 蟒蛇格式化代碼從列表
- 22. 如何序列化/反序列化從普通類繼承的對象列表並遵循同一個接口?
- 23. 從相同的代碼庫構建2應用程序
- 24. 從DbDataReader讀取/序列化時避免代碼複製?
- 25. XMLDocument.load方法(XML)從XmlSerializer的序列化代碼
- 26. 從另一個序列初始化Boost.Fusion序列的元素
- 27. Erlang序列化庫
- 28. 一個被程序代碼
- 29. AccessControlException與在同一代碼庫中的小程序類
- 30. 序列化一個CGContext
你究竟在做什麼?聽起來像[X-Y問題](http://meta.stackexchange.com/q/66377/210732)給我。 – 2013-03-24 23:52:15
我有一個遞歸序列化系統來將我的遊戲關卡保存到磁盤,但是我在遊戲對象中創建了一個通用對象,它可以執行一些不同的事情,具體取決於您爲其兩個std ::函數傳遞的內容, d寧願以某種方式序列化std ::函數,並且有一些方法可以從磁盤加載它們(在同一個exe文件中,但是不同的調用) – zacaj 2013-03-24 23:54:41