#import <Foundation/Foundation.h>
@interface Sum: NSObject {
int number;
int numbers;
int triangularNumber;
int n;
}
-(int) numberInput;
-(void) roof: (int) number;
@end
@implementation Sum
-(int) numberInput {
NSLog(@"What triangular number do you want?");
scanf("%i", &numbers);
} // !Control reaches and of non-void function
-(void) roof: (int) number {
number = numbers; // !Local declaration of 'number' hides instance variable
for(n = 1; n<=number; ++n) // !Local declaration of 'number' hides instance variable
triangularNumber += n;
NSLog(@"Triangular number %i is %i\n", number, triangularNumber); // !Local declaration of 'number' hides instance variable
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Sum *mySum = [[Sum alloc] init];
[mySum roof:[mySum numberInput]];
[pool drain];
return 0;
}
숫자를 입력 받고 그 숫자 개수만큼 더하는 소스인데요 만일 10을 넣으면 55가 출력되고 100을 넣으면 5050이 출력죕니다.
주석 부분에서 저렇게 경고가 뜨네요
콘솔 창에 뜨면 상관은 없지만 경고문구가 눈에 거슬려서 없애고 싶어서 올려봤어요
어떻게 접근을 해야 할까요?
Control reaches and of non-void function : 아마 중간에 and 가 아니라 end 일꺼같은데.. "Control 이 void가 아닌 함수의 끝에 도달했다."
void 가 아닌 함수라는건 어떤 값을 리턴해야 한다는건데.. 끝에 return 0; 라도 넣어주면 되겠죠.
Local declaration of 'number' hides instance variable : "'number'의 지역 선언이 인스턴스 변수를 가린다."
매개 변수 number도 있고 클래스에 선언된 number도 있는데.. roof 메소드 안에서 뭘 사용하는건지 모르니 매개 변수인 number를 사용했고 클래스의 number는 무시된다는 이야기죠.
둘중 하나를 삭제하고 수정하면 되겠네요.