我已经看到了这两种风格的代码,我不确定一个是否比另一个更好(它只是风格问题)?你有什么建议可以选择一个而不是另一个.
//Example1
class Test {
private:
static const char* const str;
};
const char* const Test::str = "mystr";
//Example2
class Test {
private:
static const std::string str;
};
const std::string Test::str ="mystr";
Run Code Online (Sandbox Code Playgroud) 在Ubuntu上运行c ++.
在configuration.h文件中我有这个(全局):
static const string APP_CONFIG_FILE_NAME = "cfg";
Run Code Online (Sandbox Code Playgroud)
在我的configuration.cpp(顺便说一句是单例,所以配置的构造函数调用加载配置)我这样做:
void Configuration::loadConfiguration() {
cout<< "config file name " << APP_CONFIG_FILE_NAME.data();
load();
}
Run Code Online (Sandbox Code Playgroud)
将从另一个全局调用负载配置:(这是失败的关键点)
Timer t(Configuration::Instance()->timeout);
Run Code Online (Sandbox Code Playgroud)
我看到cost字符串未初始化(空).如果我用char*替换字符串,它按照我预期的顺序初始化.
但是在另一个程序上配置相同的类工作,所以我不知道问题.
还有另外一个问题,但不是因为同样有它不是一个全球性的.
c++ ×2