在Visual Studio中

时间:2016-11-29 10:03:38

标签: c++

  

下次打电话时。 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;
};

1 个答案:

答案 0 :(得分:0)

int j; - 你忘了初始化它,next()正在寻找一些垃圾内存地址并崩溃。

同样hasNext()永远不会初始化j因为it != endit && j == (*it).size()始终为false,因为j仍然是垃圾。

修复很简单 - 在构造函数中初始化int j或通过int j { 0 };

等就地初始化