작성
·
200
0
class Student:public Person
{
private:
int m_intel
public:
Student (const std:: string&name_in ="No Name", const int &intel_in=0)
:Person(name_in),m_intel(intel_in)//여기서 오류발생
{}
}
선생님께서 여기서 오류가 나는 이유가 default constructor가 없기 때문에 생긴다 하셨는데 Student 의 생성자가 호출될때 string&name_in 여기에 "No Name" 으로 initialize 가 되고 "No Name"을 가진 변수 name_in을 Person(name_in)이런식으로Person class을 생성하면서 보내기때문에 Person class 의 생성자
Person(const std::string & name_in)
:m_name(name_in)
{}
이 생성자 만으로도 충분히 작동이 될꺼같은데 안되는 이유가 무엇인가요? Person(const std::string &name_in)이 생성자의 name_in 에 "No Name" 이 들어가서 m_name 에 "No Name"을 할당시켜주므로 default constructor 없이도 잘 작동될꺼 같은데 안되는 이유를 잘 모르겠습니다
답변 2
3
Person(name_in) 호출시 Person(const std::string & name_in) 생성자가 잘 불러와지는것 맞습니다!
질문자님 말씀이 맞아요. 저도 강의 코드 똑같이 작성해봤는데 이미 Person 에 Person(const std::string & name_in) 생성자가 정의 되어있기 때문에 Person(name_int) 호출에 아무 문제가 없었습니다.
12:30 에서 교수님의 에러메세지가 출력이 되는데 name_in 을 받을 수 있는 생성자가 없다고 나오거든요? 뭔가 해당 시간 당시에는 교수님의 Person 클래스에 Person(const std::string & name_in) 생성자가 작성 되있지 않았던건가... 하는 생각이 드네요..!! 저도 의아하네요
안그래도 동일한 강의의 다른 질문에 12:30에 ide 가 순간적으로 잘 못 판단한거 같다고 문의 남겨주신 수강생님 계시네요!
0