大量のベクトルを使用するクラスがあります。ベクトルの反復子は互換性がありません
class Bar {
Bar();
std::vector<Foo> * _grid;
void someFunction();
}
Bar::Bar() {
_grid = (std::vector<Foo> *)malloc(_gridSize * sizeof(std::vector<Foo>);
memset(_grid, 0, _gridSize * sizeof(std::vector<Foo>);
}
void Bar::someFunction() {
int index = 0;
std::vector<Foo> someVariable = _grid[index];
}
はしかし、すぐに私はsomeFunction()
呼び出すように、私はすぐに_grid[index]
で一部のコンテンツがあるようvector iterators incompatible
エラーメッセージが表示されます。ベクトルが空の場合、それは機能します。
無効なイテレータによって生成されたエラーメッセージについては読んだことがありますが、この時点では何も変更されていないため、ここでは間違っていません。
なぜあなたは 'malloc'を使っていますか?あなたのベクターは構築されていません! –
これについての奇妙なことは、push_backなどが働いていて、ビジュアルスタジオが容量とサイズで正しく表示されていることです^^。コンストラクタを忘れてしまった。 – Etan
"私は大量のベクトルを使いたいクラスをいくつか持っています。"実行時に明らかにあなたが決定している金額。うーん...なぜベクトルのベクトルを使うのではないの?あなたは何とか、それらの使用の途中で**どんなベクトルが**あるのか何とか忘れましたか? :) –