2014-09-19 2 views
2

내 교수는 우리가 작성한 코드에 C++의 while 함수를 사용하도록 요청합니다. 나는 동일한 오류를 계속 반환하므로 while 루프를 이해하는 간단한 간단한 코드를 작성했습니다. 아직도이 부분에 붙어 있습니다. 분명히 내 프로그램의 끝이 아니며, 나는 while 함수에 갇혀 있습니다. 어떤 아이디어?C++ 포인터가 정수 컴파일 오류와 비교

#include <iostream> 
#include <cstdlib> 

using namespace std; 

void response(){ 
    cout<<" Continue loop function?\n"; 
    cout <<"y - yes\nn - no\n"; 
    char response='y'; 
    cin>> response; 
    return; 
} 
int main(){ 
    response(); 
    while (response=='y') 
    return 0; 

} 
+5

가변 범위에 문제가 있습니다. http://www.tutorialspoint.com/cplusplus/cpp_variable_scope.htm – Kyborek

+1

디버깅을 수행 할 테스트 케이스를 작성하는 데 +1이 필요합니다. _ 탁월한 이동. 나는 그것이 얼마나 중요한지를 강조 할 수 없다 !! 문제는 루프와 관련이 없으므로 부주의합니다. –

답변

1

부울을 기다리는 중입니다. 응답에 'y'를 비교하기 위해, 당신은 는 char 빈에서 반환 형식을 변경해야합니다

char response(){ 
    cout<<" Continue loop function?\n"; 
    cout <<"y - yes\nn - no\n"; 
    char response='y'; 
    cin>> response; 
    return response; 
} 
2

당신은 main()에서 함수 지역 response 변수에 액세스 할 수 없습니다. 이 라인

while (response=='y') 

response에서

가 표시되는 오류가 발생 'y'에 비해 response() 함수의 주소로 해석됩니다. 다른 사람이 오히려이

char response(){ 
    cout<<" Continue loop function?\n"; 
    cout <<"y - yes\nn - no\n"; 
    char resp='y'; 
    cin >> resp; 
    return resp; 
} 
int main(){ 
    while (response()=='y'); // << also note the semicolon here 
    return 0; 

} 
2

뭔가를해야 언급 한 바와 같이


잘못 여기에 몇 가지가 있습니다. 귀하의 주요 기능은 아마 다음과 같아야합니다

int main() 
{ 
    while (response() == 'y') 
    { //must have either an empty body or a semicolon here, 
     //otherwise our return statement will become the loop body! 
    } 

    return 0; 
} 

또한, 당신의 response() 기능은 로컬 변수 response를 반환해야합니다 그래서 main에 반환 될 수있는 값입니다. 범위 때문에 응답 함수 외부에서 response 변수를 사용할 수 없습니다.

(잘못된) 주 기능이 현재 수행하는 것은 response() 함수를 호출 한 다음 응답 함수를 char 리터럴 'y'과 비교해보십시오. 그러나 이것은 함수에서 반환 된 값을 비교하지 않고 함수 자체의 메모리 주소 (포인터)를 비교합니다.

C++에서는 같은 변수와 함수를 사용할 수 있지만 일반적으로 나쁜 생각입니다. response() 함수 또는 response 로컬 변수에 다른 이름을 지정하고자 할 수 있습니다.

+0

실제 경고 메시지의 출처를 설명하는 +1입니다. 보너스 포인트는'response()'에서 에러를 지적하는 경우입니다. (타입으로'void'를 갖는 빈'return', 그리고 함수 이름을 지역 변수로서 무서운 사용). – WhozCraig

+0

@WhozCraig 이미 편집했습니다! – ApproachingDarknessFish

관련 문제