我感兴趣的是能够跨两个cpp文件共享已定义的全局变量。以下是可能的吗?我对此感兴趣,以避免多次初始化全局共享变量。我无法构建此代码。在这种情况下,您如何建议声明/定义myMap?
MapHeader.h
#ifndef _MAP_HEADER_
#define _MAP_HEADER_
#include <string>
#include <map>
using namespace std;
extern const map<int, string> myMap = {{100 , "one hundred"}, {200,"two hundred"}, {300,"three hundred"}};
#endif // _MAP_HEADER_
FirstFile.h
#ifndef _FIRST_FILE_
#define _FIRST_FILE_
#include "MapHeader.h"
#include <iostream>
#include <string>
using namespace std;
void myFunction1();
#endif
FirstFile.cpp
#include "FirstFile.h"
void myFunction1(){
cout << "myFunction1()" << myMap[100] << endl;
}
SecondFile.h
#ifndef _SECOND_FILE_
#define _SECOND_FILE_
#include "MapHeader.h"
#include <iostream>
#include <string>
using namespace std;
void myFunction2();
#endif
SecondFile.cpp
#include "SecondFile.h"
void myFunction2(){
cout << "myFunction2()" << myMap[200] << endl;
}
Main.cpp的
#include "FirstFile.h"
#include "SecondFile.h"
int main()
{
myFunction1();
myFunction2();
return 0;
}
我收到错误消息:
错误:传递&#39; const std :: map&lt;&gt;&#39;作为&#39;这个&#39; &#39; std:map&lt;&gt;&#39;的参数.....
答案 0 :(得分:3)
在MapHeader.h中,将您的定义更改为extern map myMap;然后将您在MapHeader.h中的定义与您在.cpp的一个中的定义完全相同。