shared-ptr

    2熱度

    2回答

    我正在使用的模塊由幾個線程(類似於生產者/消費者)組成,它們之間的消息傳遞是通過發送生成的對象的地址通過boost :: message_queue發送函數完成的。 到目前爲止,內存管理是通過實例化生產者線程中的對象並在用戶線程中將其刪除後顯式地完成的。 由於顯而易見的原因(控制複雜性並避免泄漏),現在我計劃使用自管理內存(智能指針/ boost shared_ptr)刪除此顯式管理。 我面臨的一

    9熱度

    8回答

    我正在創建一個將成爲DAG一部分的類。構造函數將指向其他實例並使用它們初始化依賴項列表。 在依賴列表被初始化之後,它只能被縮短 - 實例永遠不能被添加爲它自己或它的任何子項的依賴。 ::std::shared_ptr是一個很自然的處理這個。爲處理DAG做了參考計數。 不幸的是,依賴關係需要知道它們的依賴關係 - 當一個依賴關係被更新時,它需要告訴它的所有依賴關係。 這會產生一個微不足道的循環,可以

    1熱度

    2回答

    我想創建一個異步。服務器。 我成功地做到了這一點,但現在我想將async_read/asyn_write函數綁定到調用者對象函數。所以我試圖做到這一點與升壓::功能 在這裏你有我的代碼: Server.cpp #include "Server.h" #include "Client.h" #include "Network.h" void Server::accept(void) {

    1熱度

    2回答

    我嘗試以下操作: boost::shared_ptr<tcp::socket> socket(new tcp::socket(*io_service)); boost::bind(&function, *socket); // compiler error: noncopyable error function(*socket); // this works fine void fun

    6熱度

    2回答

    我有一個resource_manager類,在內部維護std::vector<boost::shared_ptr<resource> >。 resource_manager是resource的朋友。我希望resource只能由resource_manager創建/刪除,所以我將它的構造函數設置爲私有的(工作正常)。 但是,如果我將析構函數設爲私有的,代碼將不會編譯,因爲析構函數被boost::sh

    6熱度

    1回答

    我試圖將對象存儲在std :: set中。這些對象是來自python環境的boost :: shared_ptr <>。增加值的設置不會造成任何麻煩。但是,當我嘗試擦除一個值時,即使我傳遞了相同的參考,它也不起作用。這裏有一個例子: #include <set> #include <iostream> #include <boost/shared_ptr.hpp> #include <bo

    2熱度

    2回答

    我有我自己的多線程服務,它處理一些命令。該服務由命令解析器,帶有隊列的工作線程和一些緩存組成。我不想關注每個對象的生命週期,所以我使用shared_ptr的非常廣泛的。每個組件都以自己的方式使用shared_ptr: 命令解析器創建shared_ptr's並將它們存儲在緩存中; worker將shared_ptr綁定到仿函數並將它們放入隊列。 緩存臨時或永久保存一些shared_ptr的。 由sh

    0熱度

    2回答

    我有以下代碼: #include <memory> class Foo; typedef std::tr1::shared_ptr<Foo> pFoo_t; class DoSomething { public: static void doSomething(pFoo_t p) { printf("doing something...\n"); } static

    1熱度

    1回答

    從代碼塊轉換項目到Visual Studio編譯器錯誤我遇到了這個令人費解的錯誤由編譯器: Error 4 error C2228: left of '.swap' must have class/struct/union shared_ptr.hpp Error 3 error C2440: '<function-style-cast>' : cannot convert from 'b

    0熱度

    1回答

    我剛剛構建了我的助推網絡的模板實現。 這裏是我是誰喊我的網絡類模板類: AbstractNetwork.hpp : #include "Network.hpp" template <typename T, typename R, typename S, typename A> class AbstractNetwork { private: T connection;