gpt4 book ai didi

c++ - 在 STL map 上使用迭代器时收到错误消息

转载 作者:行者123 更新时间:2023-11-28 00:42:41 26 4
gpt4 key购买 nike

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

或从方法声明中删除 const

关于c++ - 在 STL map 上使用迭代器时收到错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17984053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com