2011-10-24 2 views
0

MoveMethod라는 내 개체 중 하나에 3 개의 TileGridAreas가 있습니다.이 구조는 특정 원본과 관련하여 열과 행의 쌍을 저장하기 위해 만든 데이터 구조입니다.Visual Studio 2010의 로컬 변수에 대한 잘못된보고

TileGridAreas는이 프로젝트의 다른 많은 영역에서 잘 작동하지만, MoveMethod 내에서 포인터로 참조 할 때 변경 사항이 올바르게 나타나지 않으며 gumming up 내가 성취하려고 노력하고있는 모든 길 찾기.

줄을 25-27에 생성자에서 세 here 초기화하십시오.

그리고 2 호선에 특별히 previewPath 여기에 편집을 처음 작업을 수행 : 만 보이는이 명시 적 링크 허용 (http://codepad.org/wXxBL7nb는)

이 제대로 previewPath이 비어있는 것을 읽고, 같은 그런 다음 5 행에 addMember 함수를 수행합니다. 디버그를 통해 밟았습니다. 작동하지 않는 이유는 전혀 없습니다.하지만 외부 함수 addMember에서 반환 할 때 locals window을 잠깐 살펴 봅니다. 임의의 이유에 관계없이 previewPath에 추가하지 않고 possibleDestinations에 추가하기로 결정한 것을 보여줍니다.

Visual Studio 또는 코드와 관련하여 문제가 있습니까? 관련된 변수에 대한 정확한 정보를 얻으려는 소스가 틀렸을 때 객체의 기능적 부분을 디버깅하는 것이 엄청나게 어렵다는 것을 발견했습니다.

+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