2014-02-08 37 views
1

我想下次使用constuctioon在我的代碼:
錯誤C2039: '基地':編譯拋誤差過程中微軟VisualStudio的2010 C++矢量iterator.base沒有找到

for (std::vector<Process>::iterator iter = processesExecutuions->begin(); iter != processesExecutuions->end(); ++iter) { 
    if (iter.base()->id == id) { 
     return iter.base(); 
    } 
} 

但VisualStudio中不'std :: _ Vector_iterator的成員< _Myvec>'

當我在Ubuntu中使用g ++時,一切正常。
你能否闡明如何在msvs中解決這個問題?

+0

爲什麼你用_base()_和迭代器?這是_reverse_iterator_不是迭代器的成員。 – Zlatomir

回答

0

看來你依賴於std::vector::<T>iterator是一種具有成員函數base的類型。你不能對容器迭代器的實際類型做出這樣的假設。迭代器可以用很多方式實現,只要滿足certain requirements即可。

std::vector的情況下,迭代器是隨機訪問迭代器,甚至可以實現爲某些平臺上的普通指針。所以不要依賴迭代器的實現細節:這些不是可移植的。

注意:如果您想訪問Process::base而不是std::vector<T>::iterator::base,那麼你需要iter->base(),而不是iter.base()