2016-11-29 68 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