当我在静态类函数上使用模板时,我有一个编译错误。
为什么会发生这种情况,我该如何解决?
错误:
错误1错误LNK2019:未解析的外部符号" public:static class CStatus const __cdecl CustomWindowComponent :: setHWNDComponent(struct HWND __ *,class WindowComponent *)" (?? $ setHWNDComponent @ VWindowComponent @@@ CustomWindowComponent @@ SA?BVCStatus @@ PAUHWND __ @@ PAVWindowComponent @@@ Z)在函数_wWinMain @ 16 D中引用:\ Demo_Project \ main.obj Demo_Project
以下代码导致编译器错误,下一个示例不会:
// Causes error WHEN the function is used
class CustomWindowComponent : public Component
{
public:
template <typename T>
static void setHWNDComponent(HWND hwnd, T* cmp)
{
}
...
// No error
class CustomWindowComponent : public Component
{
public:
static void setHWNDComponent(HWND hwnd, Component* cmp)
{
}
...
// in main compile error occurs here
CustomWindowComponent::setHWNDComponent<WindowComponent>(myHwnd, cmp.get());
*注意:在我的项目中,静态函数在头文件中定义,并在其.cpp文件中实现。为了简洁起见,我在这篇文章中合并了它们。