헤더 파일에서 네임 스페이스 아래에 템플릿 함수가 정의되어 있습니다. 이 헤더를 같은 프로젝트의 두 소스 파일에 포함시킬 때. 나는 재정의 오류가 발생하지 않습니다.헤더 파일에 대한 재정의 오류 - cpp
/* template.h */
namespace x
{
template<typename T>
function(t)
{
/* implementation */
}
}
/*test.cpp*/
#include "template.h"
/* test2.cpp */
#inlcude "template.h"
위의 경우에는 재정의 오류가 발생하지 않습니다. . 왜 오류가 발생하지 않습니까?
헤더 파일에 * 함수 *를 정의하지 않았기 때문에 * 템플릿 * 함수를 정의했습니다. 예. [템플릿을 헤더 파일에만 구현할 수있는 이유는 무엇입니까?] (http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file) 자세한 내용은 . –
나는 이해하지 못한다 - 당신은 왜 당신이 오류를 얻지 못하고 있는지 묻고 있습니까? 또는 무엇을? 헤더 파일은 각 cpp 파일에 한 번 포함되었으므로 재정의 할 수 없습니다. 각 cpp는이 헤더를 한 번만 볼 수 있기 때문에 괜찮습니다. –
template.h를 여러 소스 파일에 포함하면 어떻게됩니까? @Someprogrammerdude –