가변적 인 템플릿으로 간단한 함수를 선언했습니다. , first
(std::string
), id
(unsigned int
) 나는 second
(std::string
)부호없는 int의 사용으로 인해 가변적 인 템플릿 C++에서 확인할 수없는 외부 기호 오류
받고 있어요 : - 다음과 같은 방법으로 그것을 호출시
template<typename ...Args>
void Log(const LogLevel level, const char * format, Args ...args);
Log(LogLevel::debug,
R"(starting x, %d pending call for "%s" with param "%s")",
id, first.c_str(),
second.c_str())
변수 유형은 어디에 다음 오류 :
Error LNK2001 unresolved external symbol "public: void __cdecl Log<unsigned int,char const *,char const *>(enum LogLevel,char const *,unsigned int,char const *,char const *)"
함수 호출에서 unsigned int
인수를 제거하면 오류가 사라집니다. AFAIK 가변적 인 템플릿은 다양한 유형을 지원합니다 ... 그래서 나는 무엇을 놓치고 있습니까?
"나는 variadic 템플릿으로 간단한 함수를 선언했습니다." 그리고 어디서 어떻게 정의 했습니까? –
템플릿 함수 * 정의 *가 헤더 파일에 *없는 * 경우 [this] (https://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the- 헤더 파일). 그렇지 않으면 [mcve]를 게시하십시오. –
이것을 놓쳤습니다! 관련 게시물에 대한 링크를 제공해 주셔서 감사합니다. – YafimK