地图声明未编译
map declaration not compiling
所以出于某种原因,这在 class 构造函数中有效,但在 class 之外不起作用 我想知道为什么以及如何让我的地图在 class 之外工作.
#include <iostream>
#include <string>
#include <map>
typedef std::map <std::string, int> idMap;
idMap type_id;
type_id["Moon"] = 1;
type_id["Star"] = 2;
type_id["Sun"] = 3;
int main()
{
std::cout << type_id["Moon"] << std::endl;
}
我得到的编译错误如下
11:1: error: 'type_id' does not name a type 12:1: error: 'type_id' does not name a type 13:1: error: 'type_id' does not name a type
我正在寻找这样一个可行的示例,如果您能告诉我为什么这行不通的话。
您的主要内容应如下所示:
int main()
{
type_id["Moon"] = 1;
type_id["Star"] = 2;
type_id["Sun"] = 3;
std::cout << type_id["Moon"] << std::endl;
}
您不能将这些语句放在函数之外(在那种情况下main()
)。
或者如果你真的想在 main()
之外填充你的地图,你可以使用列表初始化构造函数来实现,如下所示:
idMap type_id { {"Moon", 1}, {"Star", 2}, {"Sun", 3} };
这种方法也适用于头文件,如下所示:
myHeader.h
#include <string>
#include <map>
typedef std::map <std::string, int> idMap;
idMap type_id { {"Moon", 1}, {"Star", 2}, {"Sun", 3} };
main.cpp
#include <iostream>
#include "myHeader.h"
int main() {
std::cout << type_id["Moon"] << std::endl;
}
所以出于某种原因,这在 class 构造函数中有效,但在 class 之外不起作用 我想知道为什么以及如何让我的地图在 class 之外工作.
#include <iostream>
#include <string>
#include <map>
typedef std::map <std::string, int> idMap;
idMap type_id;
type_id["Moon"] = 1;
type_id["Star"] = 2;
type_id["Sun"] = 3;
int main()
{
std::cout << type_id["Moon"] << std::endl;
}
我得到的编译错误如下
11:1: error: 'type_id' does not name a type 12:1: error: 'type_id' does not name a type 13:1: error: 'type_id' does not name a type
我正在寻找这样一个可行的示例,如果您能告诉我为什么这行不通的话。
您的主要内容应如下所示:
int main()
{
type_id["Moon"] = 1;
type_id["Star"] = 2;
type_id["Sun"] = 3;
std::cout << type_id["Moon"] << std::endl;
}
您不能将这些语句放在函数之外(在那种情况下main()
)。
或者如果你真的想在 main()
之外填充你的地图,你可以使用列表初始化构造函数来实现,如下所示:
idMap type_id { {"Moon", 1}, {"Star", 2}, {"Sun", 3} };
这种方法也适用于头文件,如下所示:
myHeader.h
#include <string>
#include <map>
typedef std::map <std::string, int> idMap;
idMap type_id { {"Moon", 1}, {"Star", 2}, {"Sun", 3} };
main.cpp
#include <iostream>
#include "myHeader.h"
int main() {
std::cout << type_id["Moon"] << std::endl;
}