2012-04-17 129 views
1

這是我的代碼:通過迭代STD:列表<wstring>

for (std::list<std::wstring>::iterator itr = kb->titles.begin(); itr != kb->titles.end() ; itr++) 
    { 
     _size += *itr.size(); 
    } 

我所試圖做的是訪問每個WSTRING包含在列表中,並調用它的大小()成員函數。然而,itr指出的內容似乎並不是迭代的wstring元素,而且出現錯誤(錯誤C2039:'size':不是'std :: _ List_iterator < _Mylist>'的成員)

你想知道它是什麼kb它是一個結構指針std::list<std::wstring> titles;作爲其成員之一。

有關如何解決此問題的任何想法?

+1

嘗試itr-> size() – Lou 2012-04-17 18:57:26

+0

使用C++ 11,使用ranged-for循環變得很容易:'for(auto title:titles)_size + = title.size();' – chris 2012-04-17 19:03:27

+0

@chris您可能想要它在這種情況下爲'(const auto&title:titles){/ * .. * /}' – Praetorian 2012-04-17 19:11:50

回答

8

運算符優先級是這裏的問題,嘗試

_size += (*itr).size(); 

甚至更​​好,

_size += itr->size(); 
+0

非常感謝! – 2012-04-17 18:58:36

3

你缺少parenthesises:

_size += (*itr).size(); 
_size += itr->size(); 

都應該工作。