c++에서 클래스 부분과 헤더 부분이 분리하는 쉬운 방법이 있을까요?

c++에서 클래스 부분과 헤더 부분이 분리하는 쉬운 방법이 있을까요?

작성일 2023.05.08댓글 2건
    게시물 수정 , 삭제는 로그인 필요

안녕하세요
C++로 DLL를 만들고 있는데요. 헤더 부분(.h)과 클래스 부분(.cpp)을 나눌려고 하는데
계속해서 재정의 관련 에러가 발생합니다.

어떻게 하면 쉽게 분리할 수 있을까요?
제가 하는 방법 다음과 같습니다.
1. 헤더 파일에는 오직 클래스만 선언
2. 구현 부분에 구현, 구현에 필요한 헤더, define 상수 등등을 선언
1번과 2번으로 나누고 있는데 컴파일 시 재정의 에러가 계속 발생하고 있습니다.
어떻게 하면 쉽게 분리를 할 수 있을까요?



profile_image 익명 작성일 -

헤더 파일은 타이핑을 줄이기 위해

타이핑할 내용을 파일에 저장하고

필요한 곳에 #include로 내용을

포함시키위한 파일입니다.

헤더 파일에는

클래스 선언

전역변수 선언(extern 붙이고 초기화안한)

전역함수 선언(함수구현이 없는)

전체 적용할 매크로 정의

인라인 함수(클래스 내부 함수 구현 포함)

소스파일에는

클래스 함수 구현

함수정의(구현)

외부변수정의(구현)

profile_image 익명 작성일 -

헤더 파일과 구현 파일 사이에서의 재정의 에러는 헤더 파일에 선언된 것과 구현 파일에서 다시 선언한 것이 충돌하기 때문에 발생합니다.

보통 이 문제를 해결하는 방법은 헤더 파일에 클래스 선언과 같은 것만 포함하고, 구현 파일에서는 헤더 파일을 include 하여 사용하는 것입니다.

MyClass라는 클래스를 만들어서 헤더 파일과 구현 파일을 분리하는 경우, 다음과 같이 작성할 수 있습니다.

#ifndef MYCLASS_H #define MYCLASS_H class MyClass { public: MyClass(); void myFunction(); }; #endif
#include "MyClass.h" MyClass::MyClass() { // 구현 부분 } void MyClass::myFunction() { // 구현 부분 }

다른 파일에서 MyClass를 사용하려면 MyClass.h를 include하면 됩니다

c++ 클래스 구현부분분리. (원리 설명)

... 클래스는 멤버 변수와 멤버 함수로 구성되어있고 멤버 변수와 멤버 함수의 정의는 헤더 파일로(*.h) 멤버 함수의 구현 부분은 일반적으로 헤더 파일이 아닌 *.cpp...

c++하는데 헤더부분 소스부분 나눠서...

c공부하고 이제 c++하는데 설명을 할때.. 클래스헤더 보이드 메인은 cpp 멤버펑션부분은 cpp 이렇게 각각의 창을... 선언과 코드를 따로 분리해서 쓰는게 보통입니다. 이...

c++ 클래스 분리 관련

배우기론 하나의 클래스를 여러 프로그램에서 사용하려면... 되고, 분리할때는 선언 부분과 정의 부분을 따로 헤더파일 , c++ 파일 두개로 나누는것 같던데 왜 그렇게 되는지가...

c++ 파일의 분할 부분에서 질문 드립니다

... 아니라 헤더파일에 관한 부분 인데요 책에는 자세히... 구분하는 방법은 잘 말씀하셨지만... 함수나 클래스의 선언은 헤더파일에 정의는 소스파일에 넣으시면 되요. 꼭...

문헌정보학과 관련된 부분이 있을까요?

... 관련된 부분이 있나요…? 조금이라두… 관련이 없다면 보고서 작성하기 쉬운 걸로라도 추천해 주세여 영화... 돌연변이: 영화 〈엑스맨 퍼스트 클래스〉 8. 유전자 지문...