我有一個函數返回一個迭代器,我保存迭代器。 這是返回的迭代器功能(其中building
是一個枚舉):功能返回Qt分段錯誤
vector<building>::iterator it;
for (it = building.begin(); it != building.end(); ++it)
{
if(it->getType() == type)
return it;
}
return gebouwen.end();
現在,當我做it->isBusy();
Qt的崩潰,並給出一個分段錯誤。
的isBusy
功能是:
bool isBusy(void) const { return busy ; };
當我調試在Qt的調試器停止在該行的代碼,並給出:
The inferior stopped because it received a signal from the operating system. Signal name: SIGSEGV Signal meaning: Segmentation fault
我不明白爲什麼這個簡單的功能讓系統停止。我重新啓動,因爲有人說這是因爲你有內存泄漏。但是這仍然無法解決它。
除了其他問題,請考慮在這樣的for循環後返回「it」,並用「break」替換內部的「return it」,這樣就有一個返回點。 –
@ChristianRau'namespace nl {typedef en :: buildings gebouwen; }':p – StackedCrooked
如果'building'是一個枚舉,那麼你如何在其上調用'.begin()'?請澄清這個問題。向量聲明在哪裏?而不是編寫一些類似的代碼,你應該粘貼你使用的實際代碼(或確保你的兼容示例編譯) –