2012-04-17 17 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: 'サイズ': 'std :: _List_iterator'のメンバーではありません)

あなたはstructのポインタであるkbが何であるか疑問に思っています。その構造体の1つとしてstd::list<std::wstring> titles;があります。

これを修正する方法についてのご意見はありますか?

+1

tryr-> size() – Lou

+0

C++ 11では、これはranged-forループで簡単になります: 'for(auto title:titles)_size + = title.size();' – chris

+0

@chrisこの場合には 'for(const auto&title:titles){/ * .. * /}'になるようにしてください。 – Praetorian

答えて

8

演算子の優先順位は

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

多くのことに感謝しました! –

3

あなたは括弧のに不足している、でも

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

またはより良いしてみてください、ここで問題です:

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

万一の両方の仕事。

関連する問題