• You should be able to use each of your headers independently from others. Thus, they must include all the dependencies they need. However, you must avoid the problem of double inclusion by adding include guards. Otherwise, your grade will be 0.
• 헤더들은 서로에게 독립적으로 사용할 수 있어야 합니다. 그러므로, 각 헤더들은 각각이 필요한 모든 종속성들을 인클루드 해야합니다.
이 말이 이해가 잘 안가서 뭘 말하는건가 고민 해봤다.
스크린샷이 안돼서 말로 일단 써놔야겠음
가령 ex01은 Contact.hpp 와 PhoneBook.hpp 두 파일이 있기를 요구하는데, (클래스 정의가 포함된 파일은 그 클래스의 이름으로 .cpp .hpp 파일을 만들기를 요구함) PhoneBook 클래스가 Contact 클래스 배열을 인스턴스로 갖고있기도 요구한다.
처음에는 그럼 PhoneBook.hpp 에 Contact.hpp 를 include 하지 말라는건가? 그럴 수가 있나? 했는데
서로에게 독립적으로 사용 할 수 있어야 하니까 -> 각자가 필요한 모든 헤더를 인클루드 하고 있어야한다
이 인과관계를 보니까 조금 이해가 됐다.
어떤 파일에서 하나가 없음으로 인해 또다른 파일이 동작 하지 않거나 하는 일이 없게 하란 말이다.
만약 둘 다 <string> 이라는 헤더를 사용하는데, Contact에 <string>이 인클루드 되어 있고 PhoneBook은 Contact.hpp를 인클루드 하니까 굳이 PhonBook.hpp에는 <string>을 include 할 필요 없지 않나? 싶지만,
이런 상황이 온다면?
1. Contact라는 클래스가 더이상 필요 없어서 Contact.hpp 를 include 목록에서 삭제했다.
=> 필요 없어진건 Contact라는 클래스 하나인데 그 결과로 PhoneBook.hpp 에서 <string> 관련 구문들이 동작 하지 않는다.
2. Contact.hpp에서 실수로 <string> 을 지웠다
=> 실수 한건 Contact.hpp 파일 하나지만 PhoneBook.hpp 도 덩달아 문제가 생긴다.
즉 서로가 서로에게 종속 되는 꼴이 되어 하나를 삭제 했을때 서로에게 영향을 주게 된다.
이렇게 되지 않게 하기 위해서 -> '서로에게 독립적이게 하기 위해서' -> 필요한건 해당 헤더가 다 인클루드 해야합니다!
독립적으로 사용할 수 있어야 한다는 건 이런 말인 것 같다.
'42cursus' 카테고리의 다른 글
[miniRT] 서브젝트 요구사항 정리[deprecated] (0) | 2022.07.30 |
---|---|
[cpp module 00] ex01 instance 부분 subject 해석 (0) | 2022.07.16 |
[netpractice] level3 의식의흐름 문제풀이 (0) | 2022.07.13 |
[netpractice] level2 의식의흐름 문제풀이 (0) | 2022.07.13 |
[netpractice] level1 의식의흐름 문제풀이 (0) | 2022.07.13 |