Я пытаюсь распечатать элементы карты, но каждый раз я получаю сообщение об ошибке, когда я назначаю итератор на карту. Сообщение об ошибке так долго и не readable..please помощь: рполучение сообщения об ошибке при использовании итератора на карте STL
//a.h
#include<string>
#include<map>
class B; //forward declaration of class B
class A
{
typedef std::map<std::string, B *> container;
private:
std::string name;
container Bs;
public:
void printAllBs() const;
typedef container::iterator set_itr_T;
};
//a.cpp
#include<a.h>
#include<string>
#include<map>
#include<b.h>
#include<iostream>
void A::printAllBs() const
{
for(set_itr_T it = Bs.begin(); it!=Bs.end(); ++it) //error here
{}
}
Нам все еще нужно сообщение об ошибке, вставьте его в свой вопрос. Это может быть не читаемо для вас, но это должно быть для других. – Borgleader
Ваш итератор должен быть постоянным итератором: for (container :: const_iterator it = Bs.begin(); it! = Bs.end(); ++ it) // ошибка здесь – Cos314
См. Ответ, который дал Ян ниже. У вас есть два варианта: используйте const_iterator, потому что вы объявляете метод как «const» или переопределяете метод без const и используете существующую реализацию as-is. – Cos314