두 개의 파일 (클래스 X와 클래스 Y)을 포함해야하는 클래스 (A)가 있습니다. 유감스럽게도 클래스 Y는 생성자가 헤더 파일에 클래스 X를 포함해야합니다 인수로서의 클래스 X 형에 대한 포인터.헤더 가드 수수께끼 - .obj 문제로 이미 정의 됨
잠재적 인 문제는 링커 오류가 발생한다는 것입니다. 클래스 A는 클래스 X의 사본 두 개를 사용합니다. 하나는 사용해야하고 다른 하나는 클래스 Y에 있습니다. 이것은 헤더 가드가 사용되지 않는 상황입니다. 내 질문은 - 이것은 순전히 구조적인 문제인가 아니면이 문제를 해결할 수있는 방법인가?
클래스 Y의 헤더 파일에 아무것도 포함하지 않는 것을 선호합니다. 그 밖의 것으로 THAT을 포함시키려는 경우가 있기 때문에 기능 프로토 타입 때문에 필요합니까?
헤더 파일에 비 인라인 함수를 정의하지 않는 한이 값은 문제가되지 않습니다. 대표 코드를 게시 할 수 있습니까? –
실제로 미안하지만 다른 곳에서 오류가 발생했다고 생각합니다. 그럼에도 불구하고, 이것은 배우는 것이 좋습니다. 따라서 헤더 파일에 프로토 타입 만 포함되어 있으면 문제없이 동일한 번호를 포함 할 수 있습니다. – SirYakalot
클래스 정의는 클래스 함수 자체에 인라인되어있는 한 멤버 정의와 함께 정의 할 수 있습니다 (예 : class X {int foo() {return 1; }};'. 이것은 좋지 않습니다.'class X {int foo(); }; int X :: foo() {return 1; }'. –