auto-ptr

    6熱度

    3回答

    考慮下面的代碼: std::auto_ptr<std::string> p; if (p.get() == 0) { ... } 是在get()成員函數用於檢查p尚未初始化的標準和可靠的方式?不管平臺,編譯器,編譯器的優化標誌等,它總會返回0嗎?

    3熱度

    3回答

    可以說我有一個基類和派生類: class Base { public: virtual ~Base() {} virtual void DoSomething() = 0; }; class Child : public Base { public: virtual void DoSomething() {

    -2熱度

    1回答

    double **mat; int i,j; mat=new double *[a]; for(i=0;i<a;i++) { mat[i]=new double [b]; } return(mat); 我寫了這段代碼來分配內存。我面臨錯誤的內存分配錯誤。這個特殊的函數在我的代碼中被調用超過10000次。我想在分配內存時使用auto_ptr。請幫我解決這個問題。

    4熱度

    1回答

    我想了解有關auto_ptr類如何工作的某些細節。假設你有以下課程(我在一個網站上發現了這個人,他解釋了賦值運算符的更精細的點)。 class TFoo : public TSuperFoo { auto_ptr<TBar> fBar1; auto_ptr<TBar> fBar2; public: TFoo& TFoo::operator=(const TFoo&

    4熱度

    1回答

    爲什麼auto_ptr中有模板拷貝構造函數和覆蓋操作符函數? C++的ISO標準爲auto_ptr指定了以下接口。 (這是直接複製了2003年的標準。) namespace std { template <class Y> struct auto_ptr_ref {}; template<class X> class auto_ptr { public:

    2熱度

    2回答

    我繼承了一個接口,並實現了一個虛擬函數,該函數應該在動態分配的對象列表上做一些工作。第一步是基於一些自定義等價標準從列表中刪除重複: class Foo { /* ... */ }; struct FooLess { bool operator()(const Foo *lhs, const Foo *rhs); } struct FooEqual { bool

    0熱度

    1回答

    我不是專業人士,我只是感到沮喪,幾乎沒有Linux音頻播放器支持id3v2作曲家標籤,我想弄清楚如何添加它。 Taglib不直接支持composer標籤,但是通過從頭開始構建標籤有一個解決方法。我試圖把它翻譯成tagpy。 以下幾行應該創建一個新的id3v2幀並將其添加到新的幀列表。 newframe = tagpy.id3v2.TextIdentificationFrame('TCOM') n

    1熱度

    3回答

    我想創建一個函數,它的auto_ptr到Base類,我想用auto_ptr到Derived類調​​用它。但是我沒有完成它。 我一直在使用它沒有一個參考的嘗試: void function(std::auto_ptr<Base> ptr); std::auto_ptr<Derived> derivedPtr(new ...) function(derivedPtr); // error: #3

    5熱度

    1回答

    我收到了一個編譯器錯誤,並注意到一些有趣的事情。出於某種原因,unique_ptr有auto_ptr過載,但我認爲auto_ptr被棄用: /usr/local/include/c++/4.9.0/bits/unique_ptr.h:228:2: note:template<class _Up, class> std::unique_ptr<_Tp, _Dp>::unique_ptr(std:

    1熱度

    2回答

    據我所知,auto_ptr不能與矢量一起使用,因爲auto_ptr不符合作爲可複製構造的要求。由於被複制的auto_ptr被修改,因此複製不會導致兩個完全相同的副本,從而違反了可複製構造方式。 Unique_ptr也似乎也這樣做;它修改被複制的對象 - 被複制對象的指針成員被設置爲nullptr。 那麼,怎麼可能使用uinque_ptr與矢量而不是auto_ptrs? 我的理解是否正確或我在這裏錯