在STL映射上使用迭代器时获取错误消息



我正在尝试打印地图元素,但每次将迭代器分配给地图时都会收到一条错误消息。错误消息太长,不可读。。请帮忙: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
   {}
}

由于您声明了函数

void A::printAllBs() const
{
   for(set_itr_T it = Bs.begin(); it!=Bs.end(); ++it) //error here
   {}
}

作为const,编译器需要确保它不会更改container中的任何内容。因此,it必须是containerconst_iterator。你必须使用

for(container::const_iterator it = Bs.begin(); it!=Bs.end(); ++it)

或者从方法声明中移除CCD_ 6。

最新更新