1
對不起我的令人毛骨悚然的英語。 在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