Template class - unresolved external symbol(s) [du

2019-02-11 07:20发布

I get this error a LOT, and i never know why. Can someone help me find the cause of it?

Edit:Removed code

3条回答
闹够了就滚
3楼-- · 2019-02-11 07:50

Put the implementation (your method definitions) into the header along with the class declaration (see this in the C++ FAQ). Some compilers have supported an "export" keyword for doing it the way that you did, but that has been nixed in the C++0x.

查看更多
Melony?
4楼-- · 2019-02-11 07:56

This errors are happening because, your template definitions are not visible to the user code. Template definition should be declared in,

  1. Header file, along with the template declarations
  2. In the .cpp file, where the user code uses it. However in this approach the definition will be visible only to the .cpp which uses it. See below example

test.h

template<typename T>
void foo (T*);

test.cpp

int main ()
{
  foo(1);
}

template<typename T>
void foo (T *p)
{
 ...
}

test2.cpp

// This file can not see the definition of foo
查看更多
登录 后发表回答