我有一些静态常量字符串作为我的C++类的私有成员。我知道在.h中声明,在.cpp中定义(和初始化)的做法。在类构造函数中,我调用一个使用这些静态字符串的函数。令人惊讶的是,在构造函数中,这些字符串保持未初始化状态(空字符串),这导致了问题。
有人能指出可能出了什么问题吗?我经常使用静态常量字符串,但从未遇到过这种情况。
更新:在utility()中,m_data保持为空。我有一个Test类对象作为另一个类的私有成员。
这是我正在使用的代码示例:
有人能指出可能出了什么问题吗?我经常使用静态常量字符串,但从未遇到过这种情况。
更新:在utility()中,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
}
std::string
对象(而不是const char*
),并且类对象处于全局作用域,在某种原因下在静态字符串之前被构造;-) 这是我根据没有代码可以做到的。 - Michael Krelin - hackerconst char*
方式的区别:https://dev59.com/y3RB5IYBdhLWcg3w77on#459970 - Johannes Schaub - litbTest
构造函数。 - Johannes Schaub - litb