我找不到任何与此相关的问题可能是因为我不知道如何准确地说出来。所以我在头文件中创建一个带有static关键字的映射,然后在源文件中将条目保存到它。我在源文件中测试了地图,并成功保存了条目。但是,当我在main.cpp文件中调用地图打印输入时,地图为空。任何人都可以帮我一个方法,以便地图在主要调用时保留条目吗?
我想通过使其静态,条目将保留在地图中直到程序结束,但似乎不然,我不知道另一种方式。感谢。
答案 0 :(得分:2)
当在名称空间中使用static class static定义对象时,它具有内部链接。因此,在您的情况下,每个编译单元都有自己的地图对象。
来自C ++(2014)标准(3.5计划和链接)
3具有命名空间范围(3.3.6)的名称具有内部链接(如果是) (3.1)
的名称- 显式的变量,函数或函数模板 声明静态;或者,
...
您应该在标题中使用关键字extern
(而不是static
)声明地图,并在一个源文件中定义对象。