2013-03-17 2 views
0

Я пытаюсь получить доступ к элементам структуры внутри итератора на C++, но компилятор просто дает мне ошибку, что структура не содержит этот элемент. Я пытаюсь сделать следующее:Доступ к структуре с проблемой итератора C++

typedef struct 
{ 
    string str; 
    int frequenzy; 
} word; 

bool isPresent = false; 

for(std::vector<word>::iterator itr=words.begin(); itr!=words.end(); ++itr) 
{ 
    if(*itr.str.compare(currentWord)==0){ 
    isPresent = true; 
    *itr.frequenzy++; 
    } 
} 

Я получаю следующее сообщение:

lab7.cc: In function 'int main()': 
lab7.cc:27:13: error: 'std::vector<word>::iterator' has no member named 'str' 
lab7.cc:29:11: error: 'std::vector<word>::iterator' has no member named 'frequen 
zy' 

Почему это не возможно?

ответ

6

Вы, вероятно, следует переписать тело вашего for петли таким образом:

if (itr->str.compare(currentWord)==0) 
//  ^^ 
{ 
    isPresent = true; 
    itr->frequenzy++; 
//  ^^ 
} 

. оператор имеет более высокий приоритет, чем оператор *. Поэтому, если вы действительно хотите использовать эти два оператора, вы должны переписать вышеприведенный способ:

if ((*itr).str.compare(currentWord)==0) 
// ^^^^^^^ 
{ 
    isPresent = true; 
    (*itr).frequenzy++; 
// ^^^^^^^ 
} 
Смежные вопросы