2012-09-24 72 views
1

我正在寫簡單的pomodoro應用程序,它基本上是倒數計時器。現在,我已經倒計時了,但奇怪的是,當我添加另一個屬性到我的班級(任意)時,我得到安裝錯誤錯誤。QTime-> addSecs導致分段錯誤

用gdb,這個問題應該在這裏:

void Status::showPomodoroTime() { 
    QTime time = pomodoroTime->addSecs(elapsed); 
    activeTime->display(time.toString("mm:ss")); 
} 

其中activeTime是QLCDNumber小部件,經過數據類型爲int。

更多背景:

void Status::createDefaultIntervals() 
{ 
    pomodoroInterval = new QTime(0, 25); 
    pomodoroBreak = new QTime(0, 5); 
    pomodoroLongBreak = new QTime(0, 15); 
} 

void Status::run() 
{ 
    if (pomodoroActive == STOP) { 
     pomodoroTime = pomodoroInterval; 
     showPomodoroTime(); 
    } 
    pomodoroActive = RUN; 
    updateStatusArea(); 
    timerTick(); 
} 

CreateDefaultInterval showPomodoroTime之前肯定運行。

什麼錯誤我,整個應用程序工作正常。正當我添加另一個屬性時,它開始拋出sedfault。

* .h文件中的變量聲明如何導致* .cpp中的段錯誤?

如果你想要更多的代碼,我可以把它放在任何地方。我只是不知道,什麼地方足夠執着。不想在此發佈(約300行代碼)。

+0

檢查'pomodoroTime'是否是一個有效的指針 – SingerOfTheFall

+0

'Status'是否可複製?如果是這樣,複製構造函數和賦值運算符是否實現? – hmjd

+0

@hmjd我怎麼知道? –

回答

1

檢查(番茄!= NULL),然後做addSecs()。

+0

這並不能保證'pomodoro'指向一個有效的對象。 – hmjd

+1

檢查NULL是不夠的 – SingerOfTheFall

+0

嗯,是的,這是解決方案。問題是,爲什麼它在我改變頭文件之前工作?我剛添加不相關的屬性...另一個int。 –

0

pomodoroTime可能是未初始化或刪除