Вы можете использовать оператор стрелки с итераторами ...
for(vector<Month>::const_iterator i = myVect->begin(); i != myVect->end(); i++)
{
cout << i->name << " " << i->nr_days << endl;
}
обратите внимание также, что более идиоматично, когда итераторы используют ++i
вместо i++
(причина в том, что i++
потребуется создать копию итератора, которая будет выброшена).
Обратите внимание, что ваш код UB (неопределенное поведение), потому что вы используете указатель на вектор, но не выделяете его. Между прочим, использование указателя в этом случае бессмысленно, код будет правильным и более простым:
vector<Month> myVect;
myVect.push_back(January);
myVect.push_back(February);
...
for(vector<Month>::const_iterator i = myVect.begin(); i != myVect->end(); ++i)
...
Мое предложение также состоит в том, чтобы не пытаться изучать C ++, просто экспериментируя с компилятором (что, как мне кажется, вы пытаетесь сделать).
C ++ является мощным, но также сложным и, к сожалению, довольно нелогичным и асимметричным во многих частях (из-за его истории развития). Добавьте к этому, что когда вы делаете ошибку (например, не выделяете вектор в исходном коде), вы не можете ожидать, что компилятор вам поможет, и даже во время выполнения программа может делать НИЧЕГО, в том числе, очевидно, работать так, как вы ожидали (наихудшая возможная вещь) , Это комбо смертельно.
Сложность, асимметрия и отсутствие проверок во время выполнения делают С ++ невозможным для изучения экспериментальным путем ... просто возьмите хорошую книгу и прочитайте ее. Так намного проще.