3

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

Edit:Removed code

Bob
  • 73
  • 1
  • 1
  • 4

3 Answers3

8

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.

jonsca
  • 10,218
  • 26
  • 54
  • 62
5

Templates must be defined in header files. See these FAQs for more info:

ildjarn
  • 62,044
  • 9
  • 127
  • 211
2

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
iammilind
  • 68,093
  • 33
  • 169
  • 336