我正在尝试打印地图元素,但每次将迭代器分配给地图时,我都会收到错误消息。错误消息太长而且不可读..请帮助:p
//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
{}
}
答案 0 :(得分:3)
因为您声明了函数
void A::printAllBs() const
{
for(set_itr_T it = Bs.begin(); it!=Bs.end(); ++it) //error here
{}
}
作为const
,编译器需要确保它不会改变container
中的任何内容。因此,it
必须是const_iterator
container
。你必须使用
for(container::const_iterator it = Bs.begin(); it!=Bs.end(); ++it)
或从方法声明中删除const
。