2011-10-24 10 views
0

MoveMethodという名前のオブジェクトの1つに、3つのTileGridAreasがあります。これは、特定の起点を基準にして列と行のペアを格納するために作成したデータ構造です。Visual Studio 2010によるローカル変数の奇妙なレポート

TileGridAreasは、このプロジェクトの他の多くの領域で正常に機能しますが、MoveMethod内のポインタで参照すると、変更が正しく表示されず、私が達成しようとしているすべての経路探索作業。

コンストラクタの3つを25-27行で初期化します。here

そして、2行目に、具体的previewPathに、ここでEDITを第1の動作を実行します。唯一のそれはそう2つの明示的なリンクを許可(http://codepad.org/wXxBL7nbは)

それは正しくpreviewPathが空であることを読み込み、など私はデバッグでそれを踏んできましたが、それがうまくいかない理由は全くありませんが、addMember関数から外部関数に戻ったときには、locals windowのクイックルック任意の理由を問わず、previewPathにではなくpossibleDestinationsに追加することを決めたことを示しています。

これはビジュアルスタジオやコードに問題がありますか?関与する変数についての正確な情報に頼っているソースが間違っていると、オブジェクトの機能的な部分をデバッグするのが非常に難しいと思っています。

+0

これは最適化されたビルドですか? –

+1

コードに問題があるのか​​、VC 2010に問題があるのか​​を調べるには、問題のデータをログファイルに書き込みます。簡単な作業。 –

答えて

0

私にとってうまく動作します。私は最小の実行可能なバージョンにコードを削減 - あなたはこれを自分で将来行う必要があります。

#include <assert.h> 

class TileGridArea 
{ 
public: 
    TileGridArea() : changed (false) {} 

    void addMember(int,int) {changed = true;} 

    bool changed; 
}; 

class MoveMethod 
{ 
public: 
    MoveMethod() 
    { 
     movePath = new TileGridArea(); 
     previewPath = new TileGridArea(); 
     possibleDestinations = new TileGridArea(); 
    } 

    TileGridArea* movePath; 
    TileGridArea* previewPath; 
    TileGridArea* possibleDestinations; 
}; 

int main() 
{ 
    MoveMethod m; 

    m.previewPath->addMember(3,4); 
    assert(m.previewPath->changed); 
    assert(!m.possibleDestinations->changed); 
} 
+0

明らかにそれは動作しなければなりませんが、それはそれほど役に立ちません。私はなぜそれが動作していないか知る必要があります。 –

+0

このコードサンプルはまだ動作しませんか?私はVS2010のぬいぐるみバージョンを持っていると言いたいのですが、少しでもコードがうまくいかなければ、おそらくVS2010を再インストールしてみてください。 – Ayjay

関連する問題