프로그래밍 언어/C++

.CPP 파일에 C ++ 템플릿 함수 정의 저장

Rateye 2021. 6. 12. 18:06
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 에서 다음 사항을 읽는 것이 좋습니다.

이러한 (및 기타) 템플릿 문제에 대해 자세히 설명합니다.

출처 : https://stackoverflow.com/questions/115703/storing-c-template-function-definitions-in-a-cpp-file
728x90
반응형