2016-12-18 93 views
0

我創建了一些'問題'對象並將它們存儲在一個向量中。 我想遍歷矢量,並在索引處做一些事情,如果對象包含某個特徵。這些都是我擁有的東西,有些物體會有不同的排列方式。處理碰撞循環通過向量中的對象的方面

QLabel *titleLabel; 
QTextEdit *textEdit; 
QLineEdit *lineEdit; 
QLabel *commentsLabel; 
QTextEdit *commentsEdit; 
QLineEdit *option; 
QLabel *scaleLabel; 
QLabel *label; 
QLineEdit *scaleFrom; 
QLineEdit *scaleTo; 

如果索引處的對象沒有特定的東西,我的代碼就會崩潰。

問題*問題;

for(int i = 0; i< question_vector.size(); i++){ 

    question = question_vector[i]; 

    if(question->scaleFrom) 
    { 
     qDebug() << question->scaleFrom->text(); 
    } 
    else 
    { 
     qDebug() << "no"; 
    } 
} 

索引爲0的對象沒有'scaleFrom',所以我的程序崩潰了。我如何處理這個並跳過它?

回答

3

您正在取消引用指針。它需要指向一個有效的內存地址。如果你的對象沒有東西,它們的指針被設置爲NULL或nullptr(C++ 11),所以你可以檢查它們是否爲空。然後,您可以在解除引用前檢查指針是否爲空。

而不是

qDebug() << question->scaleFrom->text(); 

你必須:

if (question != nullptr && question->scaleFrom != nullptr) 
    qDebug() << question->scaleFrom->text();