728x90
반응형
질문 : .CPP 파일에 C ++ 템플릿 함수 정의 저장
헤더에 인라인 대신 CPP 파일에 저장하고 싶은 템플릿 코드가 있습니다. 어떤 템플릿 유형이 사용 될지 아는 한 이것이 가능하다는 것을 알고 있습니다. 예를 들면 :
.h 파일
class foo
{
public:
template <typename T>
void do(const T& t);
};
.cpp 파일
template <typename T>
void foo::do(const T& t)
{
// Do something with t
}
template void foo::do<int>(const int&);
template void foo::do<std::string>(const std::string&);
마지막 두 줄에 유의하십시오. foo :: do 템플릿 함수는 int 및 std :: strings에서만 사용되므로 이러한 정의는 앱이 링크됨을 의미합니다.
내 질문은-이것은 불쾌한 해킹입니까 아니면 다른 컴파일러 / 링커와 함께 작동합니까? 현재 VS2008에서만이 코드를 사용하고 있지만 다른 환경으로 이식하고 싶습니다.
답변
설명하는 문제는 헤더에 템플릿을 정의하거나 위에서 설명한 접근 방식을 통해 해결할 수 있습니다.
C ++ FAQ Lite 에서 다음 사항을 읽는 것이 좋습니다.
- 내 템플릿 클래스의 정의를 선언에서 분리하여 .cpp 파일에 넣을 수없는 이유는 무엇입니까?
- 템플릿 함수에서 링커 오류를 피하려면 어떻게해야합니까?
- C ++ 키워드 내보내기는 템플릿 링커 오류에 어떻게 도움이됩니까?
이러한 (및 기타) 템플릿 문제에 대해 자세히 설명합니다.
출처 : https://stackoverflow.com/questions/115703/storing-c-template-function-definitions-in-a-cpp-file
728x90
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
전체 ASCII 파일을 C ++ std :: string [duplicate]로 읽기 (0) | 2021.06.14 |
---|---|
문자열에 C ++의 문자열이 포함되어 있는지 확인 (0) | 2021.06.14 |
C ++에서 POD 유형이란? (0) | 2021.06.12 |
C ++에서 현재 시간과 날짜를 얻는 방법 (0) | 2021.06.12 |
C와 C ++ 모두에서 유효한 코드가 각 언어로 컴파일 될 때 다른 동작을 생성하는 방법 (0) | 2021.06.11 |