The full implementation of a template class must be in that template class's header. The ANSI/ISO standards for C++ allow for a way to put the implementation in a separate compilation unit using the export keyword (I think that's right, anyway...), but I don't think that there are currently any compilers that actually support this.
Edit: Just thought I'd elaborate a bit more. I am not a compiler writer, so the following might not be completely accurate.
I believe that the reason for needing the full implementation in the header is that the compiler will typically only compile a template class when a "specialization" of that class is instantiated. The compiler will also only compile the parts of the template class that actually get used. So, when the compiler is compiling a single .cpp file that instantiates a specialization of a template class, it needs to have the full definition of that template class to correctly compile it.
Edit2:
In searching Google a bit to make sure I didn't make any claims that were too drastically wrong, I found a link that explains exporting templates a bit
here.