map m1;写错了吗?

ks_is 2010-06-13 04:13:08
全局变量申明:
using namespace std;
map<string,BASIC_DATA> m1;


代码链接通过,运行错,调试时watch m1显示:
couldn't find method map<std::basic_string........
我错哪了?
...全文
200 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2010-06-17
  • 打赏
  • 举报
回复
你能不能别再折腾啊。gdb自己得去装高版本的,而且就是高版本也不保证的。
ks_is 2010-06-17
  • 打赏
  • 举报
回复
做了个测试:
untitled1.hpp
#ifndef _UPP
#define _UPP
#include <string>
#include <map>
#include <vector>
#include <utility>
using namespace std;
extern std::string s;
extern std::map <int ,std::string> m;
extern std::vector<string> v;
void fun();
#endif

untitled1.cpp
#include "untitled1.hpp"
std::map<int,std::string> m;
std::string s;
std::vector<std::string> v;

void fun()
{
s="my";
m.insert(make_pair(1,"hello"));
m.insert(make_pair(2," world!"));
v.push_back("");
}


main.cpp
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
#include <iterator>
#include "untitled1.hpp"
using namespace std;

vector<string> v1;
int main()
{

fun();
cout<<s<<endl;
cout<<m.find(1)->second<<m.find(2)->second<<endl;
cout<<v.at(0)<<endl;
v1.push_back("ok");
cout<<v1.at(0);
}

可以运行,只是调试还是出现couldn't find method xxx<std::basic_string........
v1,v,m,s都是.

正式程度部分代码:

class BASIC_DATA
{
private:
string m_product,
m_p20_low,
m_p20_std,
m_p24_low,
m_p24_std,
m_lss_low,
m_lss_std,
m_lpe_low,
m_lpe_std,
m_release_std;
public:
void set_product(string s){m_product=s;}
void set_p20_low(string s){m_p20_low=s;}
void set_p20_std(string s){m_p20_std=s;}
void set_p24_low(string s){m_p24_low=s;}
void set_p24_std(string s){m_p24_std=s;}
void set_lss_low(string s){m_lss_low=s;}
void set_lss_std(string s){m_lss_std=s;}
void set_lpe_std(string s){m_lpe_std=s;}
void set_release_std(string s) {m_release_std=s;}
string get_product()const{return m_product;}
string get_p20_low ()const{return m_p20_low;}
string get_p20_std ()const{return m_p20_std;}
string get_p24_low ()const{return m_p24_low;}
string get_p24_std ()const{return m_p24_std;}
string get_lss_low ()const{return m_lss_low;}
string get_lss_std ()const{return m_lss_std;}
string get_release_std() const{return m_release_std;}
};
void ReadBasic(std::string file_name)
{
string read_buf;
vector<string> v;
BASIC_DATA basic_data;
ifstream ist(file_name.c_str());
if(ist)
{
while(getline(ist,read_buf))
{
if(read_buf.length()<10)continue;
boost::to_lower(read_buf);
v.clear();
boost::split(v,read_buf,boost::is_any_of(","),boost::token_compress_off);
basic_data.set_product(v.at(0));
basic_data.set_p20_low(v.at(3));
basic_data.set_p24_low(v.at(4));
basic_data.set_lss_low(v.at(5));
basic_data.set_p20_std(v.at(6));
basic_data.set_p24_std(v.at(7));
basic_data.set_lss_std(v.at(8));
basic_data.set_lpe_std(v.at(9));
m_basic.insert(make_pair(basic_data.get_product(),basic_data));
}
ist.close();
}
cout<<"Can't open "+file_name+"!"<<endl;
}

不能运行!
Michael_Xie 2010-06-14
  • 打赏
  • 举报
回复
你的BASIC_DATA有默认构造函数吗?
ForestDB 2010-06-14
  • 打赏
  • 举报
回复
map<string, int>还报错么?
另外就一个m1,你watch什么?
tang21814 2010-06-13
  • 打赏
  • 举报
回复
不清楚 纯来学习了...
黑娃 2010-06-13
  • 打赏
  • 举报
回复
改成map<int,BASIC_DATA>和map<string,int>试试看到底是string还是BASIC_DATA出错了
arong1234 2010-06-13
  • 打赏
  • 举报
回复
不是什么class都可以放到map的,每个模板参数类型都必须满足一定的约束条件。我估计你没有贴出来的missing的函数是你哪个BASIC_DATA必须提供的[Quote=引用 6 楼 ks_is 的回复:]
引用 4 楼 zhangweiit 的回复:
同时,确定你包含了头文件
#include <map>

该包含的都包含了,BASIC_DATA is a class.
[/Quote]
  • 打赏
  • 举报
回复
试试在gdb命令窗口
pmap m1
  • 打赏
  • 举报
回复
这个是gdb对stl支持的问题。
ks_is 2010-06-13
  • 打赏
  • 举报
回复
代码太长,用的是CODEBLOCK最新的.
ks_is 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhangweiit 的回复:]
同时,确定你包含了头文件
#include <map>
[/Quote]
该包含的都包含了,BASIC_DATA is a class.
屎带芬 2010-06-13
  • 打赏
  • 举报
回复
传代码看看嘛,不好判断!
你目前的情况有可能是断点位置不对!
zhangweiit 2010-06-13
  • 打赏
  • 举报
回复
同时,确定你包含了头文件
#include <map>
zhangweiit 2010-06-13
  • 打赏
  • 举报
回复
语法上是没错的,问题出在你这个BASIC_DATA
taodm 2010-06-13
  • 打赏
  • 举报
回复
呃,就别太把调试器当回事了。
低版本,弱功能的调试器是应付不了stl的。
  • 打赏
  • 举报
回复
包含string和map的头文件没

64,281

社区成员

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

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