2015-04-03 63 views
0

這是我打電話頂點類,重載< <操作打印 出它的私有成員ID我遇到分段錯誤,不知道爲什麼

 case 'v': 

    if (isAlreadyFile == true){ 

     vector <Vertex*> vertices = graph.GetVertices(); 
     cout << "Vertices: " << endl; 

     int currentVerticie = 0; 
     Vertex v = *vertices[currentVerticie]; 

     while (currentVerticie < numVertices){ 

     cout << v << endl; 
     currentVerticie++; 
     v = *vertices[currentVerticie]; 

     } 

    } 

    else{ 

這是Vertex類的實現文件,請幫忙!

#include "Vertex.h" 

using namespace std; 

// Static Member Variables 
int Vertex:: m_IDTotal = -1; 

Vertex::Vertex(){ 

    m_IDTotal++; 
    m_ID = m_IDTotal; 

} 

int Vertex::GetID() const { 

    int ID = m_ID; 
    return ID; 

} 

ostream& operator << (ostream &sout, const Vertex &v){ 

    sout << " ID: " << v.GetID(); 

    return sout; 

} 
+0

引入調試器。在段錯誤之前,所有變量的值是什麼? – 2015-04-03 00:28:58

+0

嘗試給出一個小但完整的示例代碼,展示您的問題。由於您不知道問題所在,因此挑選一些數據併發布它們可能會排除導致或者成爲問題一部分的代碼。既然你正在處理一個指針向量,那麼向量中指針的設置就是原因 - 你沒有看到。 – Peter 2015-04-03 00:29:41

+0

指針的所有向量看起來對我來說都不是最理想的。以及取消引用,而不檢查矢量是否大小> 0。 – BitTickler 2015-04-03 01:10:25

回答

0

很可能numVertices的值很差。將其更改爲(int)vertices.size()

相關問題