0

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

1 回答 1

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从方法声明中删除。

于 2013-08-01T02:15:00.117 回答