【发布时间】:2010-11-30 20:59:55
【问题描述】:
我有一些静态常量字符串作为我的 C++ 类的私有成员。我知道 .h 中的声明和 .cpp 实践中的定义(和初始化)。在类构造函数中,我调用了一个使用这些静态字符串的函数。令人惊讶的是,在构造函数中,字符串保持未初始化(空字符串),这会产生问题。
有人能指出这里可能出了什么问题吗?我一直在使用这种静态常量字符串,但从未遇到过这种情况。
更新:m_data 在实用程序()中保持为空。我有一个 Test 类对象作为另一个类的私有成员。
这是我正在使用的一种代码:
// Test.h
class Test
{
public:
Test();
private:
void utility();
static const std::string m_data;
};
// Test.cpp
const std::string Test::m_data = "Data";
Test::Test()
{
utility();
}
void Test::utility()
{
//use m_data here
}
【问题讨论】:
-
如果您不费心发布任何代码,您希望有人如何帮助您找出问题所在? ESP?
-
我的猜测是这些是
std::string对象(与const char*相对),并且类对象处于全局范围内,并且无论出于何种原因在静态字符串之前构造 ;-) 大约我可以根据没有代码做。 -
对
const char*方式的区别说明:stackoverflow.com/questions/459942/… -
在添加代码时,您忘记从调用
Test构造函数的位置添加。 -
你为什么不在调试器中运行你的代码,在出错的地方停止它,然后在这里发布堆栈。这是我们相信它不是静态初始化错误的唯一方法。
标签: c++ string static initialization constants