地图数据结构不显示 main.cpp 中保存的条目
map data structure doesn't show saved entries in main.cpp
我找不到与此相关的任何问题,可能是因为我不知道如何准确表达。所以我在头文件中创建一个带有 static 关键字的映射,然后将条目保存到源文件中。我测试了源文件中的地图并成功保存了条目。但是,当我调用 main.cpp 文件中的地图来打印条目时,地图是空的。任何人都可以帮助我,以便地图在 main 中调用时保留条目吗?
我认为通过将其设为静态,条目将保留在地图中直到程序结束,但似乎并非如此,我不知道其他方法。谢谢
当 object 定义为名称 space 中的存储 class 静态时,它具有内部链接。因此,在您的情况下,每个编译单元都有自己的映射 object.
来自 C++ (2014) 标准(3.5 程序和链接)
3 A name having namespace scope (3.3.6) has internal linkage if it is
the name of (3.1)
— a variable, function or function template that is explicitly
declared static; or,
...
您应该在 header 中使用关键字 extern
(而不是 static
)声明映射,并在一个源文件中定义 object.
我找不到与此相关的任何问题,可能是因为我不知道如何准确表达。所以我在头文件中创建一个带有 static 关键字的映射,然后将条目保存到源文件中。我测试了源文件中的地图并成功保存了条目。但是,当我调用 main.cpp 文件中的地图来打印条目时,地图是空的。任何人都可以帮助我,以便地图在 main 中调用时保留条目吗?
我认为通过将其设为静态,条目将保留在地图中直到程序结束,但似乎并非如此,我不知道其他方法。谢谢
当 object 定义为名称 space 中的存储 class 静态时,它具有内部链接。因此,在您的情况下,每个编译单元都有自己的映射 object.
来自 C++ (2014) 标准(3.5 程序和链接)
3 A name having namespace scope (3.3.6) has internal linkage if it is the name of (3.1)
— a variable, function or function template that is explicitly declared static; or,
...
您应该在 header 中使用关键字 extern
(而不是 static
)声明映射,并在一个源文件中定义 object.