Unless you explicitly list out all template instantiations, you cannot separate the template into header and source files.
See also: http://www.parashift.com/c++-faq/templates-defn-vs-decl.html
Thank you, this makes much more sense now. I swear I had it in one place at one point, but I was getting other errors and thought it was because of that. Just changed it to one file and it's all working now. It's my first time using templates by the way, trying to learn more C++. Thank you.