下次打电话时。 Visual Studio 2015中的下一个函数不可解除引用。运行时错误
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 :(得分:0)
int j;
- 你忘了初始化它,next()
正在寻找一些垃圾内存地址并崩溃。
同样hasNext()
永远不会初始化j
因为it != endit && j == (*it).size()
始终为false,因为j
仍然是垃圾。
修复很简单 - 在构造函数中初始化int j
或通过int j { 0 };