Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Итераторы C++


Автор: nextzi0 19.4.2013, 19:59
Есть вот такой класс:
Код

#ifndef QLIST_H
#define QLIST_H
#include <string>
#include <vector>

using namespace std;

struct Question 
{
    string qText;
    string Answers[5];
    int rightAnswer;
    int points;
    int qnum;
};
    
class QList
{
private:
    
    
public:

    QList();
    ~QList();
    
    vector<Question> Questions;
    
    void AddQuestion();
    void DeleteQuestion(int num);
    void ShowQuestion(int num);
};

#endif // QLIST_H


И реализация метода:
Код

void QList::ShowQuestion(int num)
{
    for (vector<Question>::iterator it = Questions.begin() ; it != Questions.end(); ++it)
    {
        if (*it->qnum == num)
        {
            cout<<*it->qText;
            break;
        }
    }
}

Компилятор ругается, что
error: invalid type argument of unary '*' (have 'int')
error: 'std::vector<Question>::iterator' has no member named 'qText' на строки с if и cout соответственно, в чем дело??

Автор: baldina 19.4.2013, 21:02
либо * и . либо ->
Цитата(nextzi0 @  19.4.2013,  19:59 Найти цитируемый пост)
 
if (*it->qnum == num)
        {
            cout<<*it->qText;
            break;
        }


Код

if (it->qnum == num)
{
  cout<<it->qText;
  break;
}

или
Код

if ((*it).qnum == num)
{
  cout<<(*it).qText;
  break;
}


Автор: nextzi0 19.4.2013, 22:57
Угу, уже сам поправил
Код

if (it->qnum == num)
{
  cout<<it->qText;
  break;
}

Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)