#include <iostream> class Dog{ int age; //private 생략함 public: int getAge() const; void setAge(int a){age=a;} void view() {std::cout<<"나는 view";} }; int Dog::getAge() const { view(); // 오류 ① return (++age); // 오류 ② } int main() { Dog happy; happy.setAge(5); std::cout<<happy.getAge(); return 0; } 오류를 수정해줘
답변
주어진 C++ 코드에서 발생하는 오류를 수정하겠습니다. 오류는 주로 getAge() 함수에서 발생합니다. 아래에 수정된 코드를 제공하겠습니다.
수정된 코드 cpp
#include <iostream>
class Dog { int age; // private 생략함 public: int getAge() const; // const 멤버 함수 void setAge(int a) { age = a; } void view() const { std::cout << "나는 view\n"; } // const로 수정 };
int Dog::getAge() const { view(); // 이제 오류가 없음 return age; // 단순히 age를 반환 }
int main() { Dog happy; happy.setAge(5); std::cout << happy.getAge(); // 5가 출력됨 return 0; } 수정 사항 설명 view() 메서드를 const로 수정:
getAge()가 const로 선언된 멤버 함수이므로, 비-const 멤버 함수를 호출할 수 없습니다. view() 메서드를 const로 변경하여 getAge()에서 호출할 수 있도록 했습니다. cpp
void view() const { std::cout << "나는 view\n"; } getAge()에서 age 값을 증가시키지 않도록 수정:
getAge()가 const로 선언되어 있으므로, age의 값을 수정할 수 없습니다. 따라서 return (++age);를 return age;로 변경하여 현재의 age 값을 반환하도록 했습니다. 이제 수정된 코드가 오류 없이 정상적으로 작동하며, happy.getAge()를 호출하면 5가 출력됩니다.