2013-04-05 4 views
0

주어진 다음의 코드 :범위 지정 문제

for (list<Vertex*>::iterator v = vertexList->begin(); v != vertexList->end(); v++) 
{ 
    if (!(*(*v) == *u)) 
    { 
     (*v)->setColor(white); 
     (*v)->setPred(NULL); 
     (*v)->setDist(INFINITY); 
    } 
} 

queue<Vertex*> Q; 
Q.push(u); 
Vertex* v = Q.front(); // WONT assign the item that is in the queue to v 
Vertex* t = Q.front();  // WILL assign the item that is in the queue to t 

당신은 변수 V for 루프에 정의되었으며 (적어도 내가 아는 한)이 단지에 마지막으로해야 볼 수 있듯이 그 범위. (for가 활성화 된 동안).

그러나 Q라는 이름의 새 변수에 Q 프런트를 할당하려고하면 현재 QUEUE 내부에있는 항목을 넣지 않습니다. 대신, 나는 단지 ??????를 본다. 그 안에. (visual STUDIO 2012 사용). 컴파일이 성공적으로 완료됩니다. 반면에

, 나는 그것이 나에게 그렇게 할 의지와 T가 올바른 값 (큐의 첫 번째 항목)를 개최한다 V 명명되지 않은 변수에 Q 전면을 할당하려고합니다.

나는 여기에서 무엇을 놓치고 ..?

+0

똑똑한 포인터가 당신 친구 야. –

+0

비주얼 스튜디오는 전에 'with'로 정의 된 변수로 자신의 범위를 지키지 않을 것입니다. 가장 간단한 것은 변수 중 하나의 이름을 바꾸는 것입니다. – scones

+0

같은 문제는 여기에서 논의 될 것으로 보인다 (그리고 비주얼 C++ 컴파일러에 맞는 옵션을 설정하는 관련 제안도 해결책이 있습니다) : http://stackoverflow.com/questions/14068432/c-for-variable-scope – jogojapan

답변

0

설명적인 속성이나 Vertex 멤버가있는 경우 디버거 버그 일 뿐이므로 제어 콘솔에 쓸 수 있고 Vertex * v가 올바르게 지정되어 있음을 알 수 있습니다.