静态QString初始化失败
问题描述:
对不起我的令人毛骨悚然的英语。 在Qt 4.8.4中,我尝试使用静态QString字段创建单例类。它不能是const,因为这个字段会在运行时改变值。通过常量QString初始化该字段,在同一个文件中声明。静态QString初始化失败
不幸的是,这是不工作,在初始化字符串
LogWay = QString("file.txt");
程序意外与错误完成
下等停止,因为它从操作系统接收到信号。 信号名称:SIGSEGV 信号含义:分段故障
文件 “qatomic_i386.h”
我做错了什么?此代码示例使用int,bool或double变量,但不能与QString一起使用。为什么?我试图写没有QString的构造函数,使用简单的等于
LogWay = "...";
但我有同样的错误。感谢您的帮助。一流的
全码:
这是.h文件中 的#include
const double _ACCURACY_ = 0.0001;
static const QString _LOG_WAY_ = "GrafPrinterLog.txt";
class GlobalSet
{
private:
static QSettings *_Settings;
GlobalSet(){}
GlobalSet(const GlobalSet&){}
GlobalSet &operator=(const GlobalSet&);
static GlobalSet *GS;
public:
static double IntToCut;
static double ReplaceSize;
static double Accuracy;
static int MaxPointCount;
static bool NeedProper;
static QString LogWay;
~GlobalSet();
static GlobalSet *Instance()
{
if (GS == NULL)
{
GS = new GlobalSet();
GS->firstSetUp();
}
return GS;
}
void firstSetUp()
{
Accuracy = _ACCURACY_;
LogWay = QString("file.txt");//fail is here!
NeedProper = false;
_Settings = new QSettings("options.ini",QSettings::IniFormat);
}
};
这就是.cpp文件
#include "globalset.h"
GlobalSet *GlobalSet::GS = NULL;
QSettings *GlobalSet::_Settings = NULL;
double GlobalSet::Accuracy = _ACCURACY_;
QString GlobalSet::LogWay = _LOG_WAY_;
难道你不能使用QStringLiteral吗? – dtech 2013-04-11 12:13:17
对不起,我不能在这个项目中使用Qt5 – 2013-04-11 12:33:35