我試圖使用從C++ X0的的unique_ptr的,通過做C++ X0的unique_ptr GCC 4.4.4
#include <memory>
與-std =的C++ 0x作曲,但它是這是一個例子,拋出許多錯誤。
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/unique_ptr.h:214: error: deleted function ‘std::unique_ptr<_Tp, _Tp_Deleter>::unique_ptr(const std::unique_ptr<_Tp, _Tp_Deleter>&) [with _Tp = Descriptor, _Tp_Deleter = std::default_delete<Descriptor>]’
UPDATE **** 這就是我要做的,我已刪除的typedef,所以你可以清楚地看到該類型
static std::unique_ptr<SomeType> GetSomeType()
{
std::unique_ptr<SomeType> st("Data","Data2",false);
std::unique_ptr<OtherType> ot("uniportantconstructor data");
st->Add(ot);
return st;
}
//Public method of SomeType
void Add(std::unique_ptr<OtherType> ot)
{
//otmap is std::map<std::string,std::unique_ptr<OtherType> >
//mappair is std::Pair<std::string,std::unique_ptr<OtherType> >
otMap.Insert(mappair(ot->name(),ot));
}
UPDATE:
如果我的課堂SOMETYPE有一個方法可以從地圖返回一個元素(使用鍵)說
std::unique_ptr<OtherType> get_othertype(std::string name)
{
return otMap.find(name);
}
那將確保調用者會收到一個指向地圖中的指針而不是副本?
我很確定'unique_ptr'沒有'Add'方法。你的意思是'ST->添加'任何機會? – fredoverflow 2010-09-22 10:21:23
是的,我修好了,抱歉,從內存中鍵入它沒有編譯它或任何東西。 – Mark 2010-09-22 10:34:57