在类的const成员函数中使用map的iterator

今天在使用map的iterator是碰到一个问题,在类的const方法中,使用map的iterator,一直报错,仔细想想才知道原因,做个记录,基础还有待加强啊!

先上代码:

void IteratorTest::printConstMap() const {

	DMap::iterator it;
	it = dmap_.begin();
	printf("printConstMap():\n");
	for (; it != dmap_.end(); it++)
		printf("printConst %s\n", (it->second).c_str());
}

如以上代码,在编译的会报错,就在it = dmap_.begin()那一句,仔细查看出错提示,大概意思就是不能从const_iterator转换为iterator。

所以主要原因就是,此方法是一个const的方法,目的就是要保证成员变量不被修改,因此,其中的dmap_被限定为const,当然仅仅在此方法的作用域内,所以当我们在使用其iterator的时候,其iterator也被限定为const,所以如果仅仅使用iterator去接收返回的iterator肯定就报错啦!

正确的代码如下:

void IteratorTest::printConstMap() const {

	DMap::const_iterator it;
	it = dmap_.begin();
	printf("printConstMap():\n");
	for (; it != dmap_.end(); it++)
		printf("printConst %s\n", (it->second).c_str());
}


所以在使用const方法的时候一定要注意!


做个记录,苦练内功!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值