2016-11-29 81 views
-1

下一次調用時。一個函數是不是在Visual Studio 2015年運行時錯誤向量迭代器在Visual Studio中不可忽略

class Vector2D { 
public: 
    Vector2D(vector<vector<int>>& vec2d) { 
     it = vec2d.begin(); 
     endit = vec2d.end(); 
    } 

    int next() { 

     return (*it)[j++]; 
    } 

    bool hasNext() { 
     while (it != endit && j == (*it).size()) 
      it++, j = 0; 
     return it != endit; 
    } 
    vector<vector<int>>::iterator it, endit; 
    int j; 
}; 

回答

0

int j; dereferencable - 你忘了初始化和next()正在尋找一些垃圾內存地址和崩潰。

hasNext()永遠不會初始化j因爲it != endit && j == (*it).size()總是假的,因爲j仍然是垃圾。

修復很簡單 - 在構造或通過就地初始化狀int j { 0 };

+0

即使想我初始化它詮釋的構造與這個 - 初始化int j> J = 0;其相同的錯誤。這隻發生在您初始化它的Visual Studio – vaibhav

+0

中? – Starl1ght

相關問題