2014-11-14 65 views
0

在此代碼中,我有兩個前向聲明,一個bool陣列和一個QString數組,名稱爲NLogQStrings陣列的前向聲明導致分段錯誤

bool的作品。 QString產生分段錯誤。

部首:

class Log : public QObject 
{ 

    explicit Log(); 
public: 
    enum Facility 
    { 
     third_party_fac, 
     test_fac, 
     __facility_last_element 
    }; 
    enum Severity 
    { 
     debug_sev, 
     warning_sev, 
     critical_sev, 
     fatal_sev, 
     __severity_last_element 
    }; 
}; 
namespace NLog 
{ 
    extern bool logging_enabled[Log::__facility_last_element][Log::__severity_last_element]; 
    extern QString severity_name[Log::__severity_last_element]; 
}; 
class LogStaticInitiallizer 
{ 
public: 
    LogStaticInitiallizer(); 
}; 
static LogStaticInitiallizer initiallizer=LogStaticInitiallizer(); 

來源:

QString NLog::severity_name[Log::__severity_last_element]; 
bool NLog::logging_enabled[Log::__facility_last_element][Log::__severity_last_element]; 
using NLog::logging_enabled; 
using NLog::severity_name; 
LogStaticInitiallizer::LogStaticInitiallizer() 
{ 
    qDebug()<<"0"; 
    qDebug()<<logging_enabled[0][0]; 
    qDebug()<<severity_name[0]; 
    qDebug()<<"1"; 
} 

它產生

並在QString跟蹤處崩潰

+1

'__facility_last_element'和其他以'__'開始的是保留標識符 –

+1

這可能是靜態初始化順序Fiasco *? –

+0

你在哪裏初始化你的數組? – vahancho

回答