2 guang nate Guang_Nate 于 2017.01.10 00:26 提问

C++中在头文件中如何去定义一个map,然后又如何在源文件(my.cpp)中引用 5C

想在头文件(my.h)中利用一个map类型建立一个std::map my_Map

并定义my_Map["one"]    = 1;
            my_Map["two"]    = 2;
            my_Map["three"] = 3;
            my_Map["four"]   = 1;

并且在cpp(my.cpp) 文件中#include “”my.h“”

在compile的过程中报出
error: 'my_Map' does not name a type my_Map["one"]    = 1;
error: 'my_Map' does not name a type my_Map["two"]    = 1;
error: 'my_Map' does not name a type my_Map["three"]    = 1;
error: 'my_Map' does not name a type my_Map["four"]    = 1;

求教大神这是什么原因,是my_Map定义出了什么问题吗?在头文件中如何去定义一个map,然后又如何在源文件(my.cpp)中引用呢?求大神赐教

8个回答

a29562268
a29562268   2017.01.10 08:26

包含文件.用的方式map第一个参数是键,第二个参数是映射的值

a29562268
a29562268   2017.01.10 08:26

键和值的类型可以自己定,采用的是模版类型

Guang_Nate
Guang_Nate 没怎么听明白,我在头文件定义的std::map<string,uint> my_Map,但是在源文件引用后compile时候有问题
11 个月之前 回复
wzxq123
wzxq123   Rxr 2017.01.10 09:04

你的map定义有问题,可以这样定义std::map myMap;

Guang_Nate
Guang_Nate 请问该怎么处理呢,感觉定义没什么问题,是不是头文件中定义map还需要什么特殊处理
11 个月之前 回复
Guang_Nate
Guang_Nate 我在头文件定义的是std::map<string,uint> my_Map ,不知道为什么问题发完后<string,uint> 就省略了
11 个月之前 回复
oyljerry
oyljerry   Ds   Rxr 2017.01.10 10:35

头文件中只是申明,或者常量初始化。
cpp中才能赋值等
http://stackoverflow.com/questions/23504339/creating-and-populating-a-map-in-a-header-file-in-c

a393062456
a393062456   2017.01.10 16:57

楼上的正解,你这报的错误也是在头文件里面。容器类变量如果要定义成全局的,必须在某个过程里面初始化。不能直接在文件开头初始化。

xiaxuqu
xiaxuqu   2017.01.11 10:26

#include

using namespace std;

map< CString, int > my_Map;
my_Map["one"] = 1;
my_Map["two"] = 2;
my_Map["three"] = 3;
my_Map["four"] = 1;

xiaxuqu
xiaxuqu   2017.01.11 10:24

#include

xiaxuqu
xiaxuqu   2017.01.11 10:27

#include < map >

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!