unique-ptr

    0熱度

    3回答

    我有一個unique_ptr的簡化示例。我想知道在獨特指針中需要移動構造函數和移動賦值操作符嗎? 如果我理解移動構造函數(並傳遞右值),這兩行代碼應該相同。 UniquePointer<T> a(new T); UniquePointer<T> a(UniquePointer<T>(new T)); 這裏是簡化UniquePointer代碼: template<typename T> cla

    1熱度

    2回答

    我正在閱讀Josuttis的C++標準庫。我無法找到的理由(2)和(3)在下面的例子中評論: D d; //instance of the deleter type(1) unique_ptr<int,D> p1(new int, D()); //D must be MoveConstructible(2) unique_ptr<int,D> p2(new int, d); //D must

    0熱度

    2回答

    我把代碼從this question和編輯它通過顯式調用布展構造的對象中的一個的析構函數,以產生一個段錯誤: using namespace std; struct Foo { Foo() { s = new char[100]; cout << "Constructor called!" << endl; } Foo(con

    0熱度

    1回答

    我有以下的情況: Base是一個基類。 T是可以假設任何派生類Base的模板。 基底層提供我數據從Base類,我需要轉換爲一個特定的類上述層(其中代碼被寫入該層)上,以在用戶級別工作。 下面是代碼: template <class T> class Access { std::vector<std::unique_ptr<T> getData(); } template <c

    0熱度

    1回答

    我想通過一個函數,然後設置一個unique_ptr內部結構的指針傳入的指針。但是,我得到以下編譯錯誤的最後一行功能。 錯誤C2280: '的std ::的unique_ptr < ALLEGRO_BITMAP,性病:: default_delete < ALLEGRO_BITMAP >> ::的unique_ptr(常量的std ::的unique_ptr < ALLEGRO_BITMAP,性病:

    0熱度

    2回答

    我正在使用C++和Allegro進行一個簡單的遊戲。我遇到一個Access violation運行時錯誤,其中包含unique_ptrs到ALLEGRO_BITMAPs的vector的structs。 這是我的結構聲明。 struct Skin { std::unique_ptr<ALLEGRO_BITMAP> img; Skin(); Skin(ALLEGRO_BI

    4熱度

    3回答

    我有代碼看起來像這樣: ISessionUpdater* updater = nullptr; if (eventName == "test") updater = new TestJSONSessionUpdater(doc); if (eventName == "plus") updater = new PlusJSONSessionUpdater(doc); if

    12熱度

    2回答

    unique_ptr<A> myFun() { unique_ptr<A> pa(new A()); return pa; } const A& rA = *myFun(); 此代碼編譯但rA包含垃圾。有人可以向我解釋爲什麼此代碼無效? 注意:如果在取消引用它之前將myFun的返回值指定給名爲unique_ptr的變量,它將正常工作。

    0熱度

    1回答

    我遵循V. Romeo的實體管理教程(位於GitHub & Youtube)。 我又試圖改寫類CEntity,CComponent和測試CPosition(主要來自內存羅密歐的視頻/代碼)。 我遇到的問題是,在我的主要我創建一個CEntity在堆棧&添加一個組件。當我通過addComponent()添加組件時,我抓住對新創建組件的引用,由addComponent()返回。 當我現在想通過返回的引用

    0熱度

    1回答

    我正在使用VS2012。 我將代碼從原始指針移植到unique_ptr並面臨問題。 在這裏,我試圖模擬場景: class xyz{ public: virtual int getm(); int get(); static std::unique_ptr<xyz> returnbase(); }; class abc:public xyz { p