我已經團結了好一會兒,回來做一些C++使用Visual Studio 2015年我碰到這個類定義的std ::的unique_ptr試圖引用刪除的功能
class A
{
public:
A();
virtual ~A();
A(const A&) = delete;
A& operator=(const A&) = delete;
private:
…
}
這個類來動態分配如下所示:
ObjPtr obj = ObjPtr(new A());
其中ObjPtr
是一種類型的定義,並且看起來像:
typedef std::unique_ptr<A> objPtr;
並使用使用std::move
添加這些創建的對象。有一點,我需要遍歷對象列表,如果我找到滿足我的條件的東西,請保留一份。
ObjPtr keep;
for(auto& object : GetObjectList())
{
if(/*check if its the object I want*/)
{
keep = object;
}
}
其中GetObjectList返回const std::vector<ObjPtr>&
。
但是我收到了「嘗試引用已刪除的函數」。我做了一些谷歌搜索,並試圖刪除= delete
部分,甚至評論了2條線。我甚至試圖做
ObjPtr keep = std::move(object);
但我仍然收到刪除的函數錯誤。任何人都可以看到我做錯了什麼或指向我可以幫助一些資源?
'ObjectList'的類型是什麼? – vsoftco
@vsoftco更新了我的文章! – dwnenr
你確定'ObjectList'不是'const'嗎? –