劳扰各位老师帮我看一下map容器做类的私用成员使用时出现的奇怪问题

caigenphoenix 2008-11-12 12:09:23
我想做一个通讯录,就定义了一个Addrss_Book类,类里面定义了一个私用的成员函数map<string,string> userdata用来读取文件中的数据(用户名和密码存在文件中) 在load()函数里面实现读取。可是编译时却出现insert”: 2 个重载没有“this”指针的合法转换 如果我在load()函数中重新定义一个map容器a,然后使用就不会出现上面的错误。这到底是什么原因啊。map容器的insert用法应该没有错啊,麻烦各位老师看一下,不胜感激。

代码:
#include<string>
#include<map>
#include<iostream>
#include<fstream>

using namespace std;

class Address_Book
{
public:

void load(const string filename) const
{
string value;
string key;
fstream in_out_put;



in_out_put.close();
in_out_put.clear();

in_out_put.open("userdata.txt",ios_base::app|ios_base::in|ios_base::out); //打开文件,如果不存在则创建一个

in_out_put << "aaaaa" <<endl; // 向文件中写入数据,以便于测试
in_out_put <<"bbbbb" <<endl;


while(in_out_put >>value >>key ) // 读取文件中的数据放入 map容器中
{

userdata.insert(make_pair("hehe","hehe")); //!!!! 出现错误!!!
}

in_out_put.close(); // 关闭文件

}


private:
map<string,string> userdata;//存放从文件中读取的数据



};

void main()
{

}
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
muyingchi 2008-11-12
  • 打赏
  • 举报
回复
哈哈,常量函数不能改成员变量
Mougou 2008-11-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Mougou 的回复:]
昨天刚回答过一个类似的问题,改成如下语句即可:
make_pair(string("hehe"),string("hehe"))
[/Quote]
不好意思,看潦草了,把const去掉就好了。
Mougou 2008-11-12
  • 打赏
  • 举报
回复
昨天刚回答过一个类似的问题,改成如下语句即可:
make_pair(string("hehe"),string("hehe"))
caigenphoenix 2008-11-12
  • 打赏
  • 举报
回复
恩。知道了,谢谢各位老师的解答,好人一生平安!
太乙 2008-11-12
  • 打赏
  • 举报
回复


void load(const string filename) const

去掉最后一个const
或者:



map <string,string> userdata;//存放从文件中读取的数据

改为:

mutable map <string,string> userdata;//存放从文件中读取的数据

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧