27

Visual Studio 2012 で次のサンプル コードを実行すると、次のようになります。

std::vector<int> test;
test.resize(1);
test[0] = 4;

テストでウォッチを設定し、その 0 番目の要素を調べることができます。ただし、test[0] にウォッチを設定すると、「これらのオペランドに一致する演算子 "[]" がありません」というエラーが表示されます。

ここに画像の説明を入力

test[0] の値を直接検査するにはどうすればよいですか?

4

4 に答える 4

50

クラスの内部構造に依存しない解決策を 1 つ見つけました。演算子呼び出しの拡張形式は、私にとってはうまくいくようです。この場合、次のコードです。

v.operator[](0)

Visual C++ 2012 でテストしました。

于 2013-10-18T22:03:46.133 に答える
7

@NateKohl が指摘したように、Visual Studio 2012 (およびおそらくそれ以前のバージョン) ではv._Myfirst、基になるベクター データへのポインターが提供され、配列であるかのようにベクターを監視できます。

于 2013-07-26T18:41:46.893 に答える
3

Visual Studio は stl コンテナーの operator[] オーバーロードをサポートしていません。デバッグ中にリストから選択して、関心のある要素に手動でウォッチを設定するだけです。

編集: ベクトル内の T オブジェクトを検査する場合は、それを T オブジェクトに割り当て、代わりにウォッチを設定します。

于 2013-07-23T00:15:27.090 に答える