【发布时间】:2013-05-12 13:09:50
【问题描述】:
我有如下代码,我遇到了静态对象顺序创建问题。
h1.hpp
namespace X {
struct XX {
static const string str1;
static const string str2;
};
}
h1.cpp
namespace X {
const string XX::str1 = "Hello World";
const string XX:str2 = "Hello Country";
}
h2.cpp ----> included h1.hpp
h3.cpp ----> included h1.hpp
h4.cpp ----> included h1.hpp
------
我想以 [X::XX::str1] 的身份访问它
func1(X::XX::str1); etc.
什么是最好的方法,因为上面的方法给了我一些静态对象创建顺序问题,当我尝试访问 X::XX::str1 时,我得到空而不是“Hello World”。我如何确保不是在每个创建本地副本的地方都使用相同的对象 (X::XX:str1)。
更新信息:
实际上当我访问 X::XX::str1 程序段错误时。所以没有创建对象?
【问题讨论】:
-
这是实际代码吗?
struct定义中缺少分号。 -
@0x499602D2 静态初始化问题通常只在涉及多个 TU 时才会出现。
-
@pmr:是的,这是我的问题,即使我创建了一个对象,这些静态成员也不会被创建,无法理解为什么和我的应用程序段错误。
标签: c++ object c++11 namespaces static-members