다른 포함에 이미 포함 된 파일을 포함 할 때 규칙은 무엇입니까?이미 포함 된 것으로 알려진 파일 포함
예 : 클래스베이스는 "base.h"로 선언되며 몇 개의 하위 클래스가 있습니다. Base는 가상 메소드 foo (Bar & bar)를 가지고 있으므로 "bar.h"를 포함합니다. 적절한 컨벤션 관점에서 볼 때 하위 클래스에 "bar.h"를 포함하는 "base.h"가 포함되면 하위 클래스에도 "bar.h"를 포함해야합니까?
다른 포함에 이미 포함 된 파일을 포함 할 때 규칙은 무엇입니까?이미 포함 된 것으로 알려진 파일 포함
예 : 클래스베이스는 "base.h"로 선언되며 몇 개의 하위 클래스가 있습니다. Base는 가상 메소드 foo (Bar & bar)를 가지고 있으므로 "bar.h"를 포함합니다. 적절한 컨벤션 관점에서 볼 때 하위 클래스에 "bar.h"를 포함하는 "base.h"가 포함되면 하위 클래스에도 "bar.h"를 포함해야합니까?
함수의 선언에 매개 변수를 선언하면되므로 해당 헤더를 포함해야합니다. 비 기본 클래스 또는 유형이 아닌 경우에는 정의가 포함되어야합니다. 다른 모든 것은 선언 만 필요하거나 구현 세부 사항이기 때문에 포함되는 간접 헤더에 의존해서는 안됩니다.
child.h에는 base.h와 bar.h를 모두 포함하는 것이 좋습니다. 이것은 가상 함수 종속성 임에도 불구하고 bar.h를 포함하여 미래의 개발자 (IDE가 없을 수도 있음)가 base.h를 읽지 않고도 선언문을 가리킬 수 있습니다.
다른 개발자가 bar.h에 대한 child.h의 의존성에 대해 염려 할 필요없이 base.h의 내용을 변경할 수 있기 때문에 비 가상 함수의 경우 둘 다를 포함하여 더 나은 imho 여야합니다.
나는 이것이 의견 질문이라고 생각하며 그렇게 생각하지 않습니다. 어쨌든, 나는 모든 헤더에 절대적으로 필요한 것만 포함 시키려고 노력하지만 질문의 주제에 관해서는 그렇게 걱정하지 않아야한다. – drescherjm
Sidenote : base.h가 bar.h의 정의를 다른 방법으로 참조하지 않는다면 bar.h를 base.h에 전혀 포함 할 필요가 없습니다. 'class bar '를 선언하는 것으로 충분합니다. – user2079303
나는 "그러므로"를 사지 않는다. 나는 이렇게 쓸 수있다 :'class Bar; Foo {virtual Bar & f() = 0; }; ' –