簡體   English   中英

矢量迭代器

[英]Vector iterator

我有一個這樣的載體

std::vector<Sprite*> mDrawings;
std::vector<Sprite*>::iterator it = mDrawings.begin();

這給出了一個錯誤

Error: no suitable user-defined conversion from std::_Vector_iterator<std::_Vector_val<Sprite *, std::allocator<Sprite *>>> to std::_Vector_iterator<std::_Vector_val<Sprite *, std::allocator<Sprite *>>> exists

但是如果我做以下

typedef std::vector<Sprite*> list;
list mDrawings;
list::iterator it = mDrawings.begin();

然后工作???。

更新:對不起,似乎由於與當前代碼無關的錯誤而產生了該錯誤。 我只是看到IDE用紅色下划線,我認為這是我的應用程序無法編譯的原因。

您粘貼的代碼實際上沒有顯示錯誤。 但是,這是另外一個黑暗的鏡頭:

在您的原始情況下, mDrawings是否可能是某個類的成員變量(只是從m前綴猜測),而您的實際代碼在const方法中? 如果是這樣,您將嘗試將const_iterator (因為在const向量上調用begin()會產生這種情況) iterator ,這是不可能的。

嘗試使用

std::vector<Sprite *>::const_iterator it = mDrawings.begin();

這樣更好嗎?

我認為您粘貼了錯誤的代碼-我想也許您做了std::vector<Sprite>::iterator it = mDrawings.begin(); 沒有*

編輯:響應更新的問題:

始終查看第一個編譯器錯誤-如ideone上所示,您的代碼缺少#include使Sprite可見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM