Ah I hate that! I don't why I always do that whenever I come back to C++ -_-
I'm now getting a few undefined references (two to my destructor, one to my constructor, and one to the method being used). Why is this? It's acting like it doesn't have a definition to use for the data types in question, but the constructor is explicitly an int (using the non-default now), and the method takes a template parameter.
Code has to be generated for each type passed into a template. Thus, you can't compile a template function unless you specify what types you require. Implementing an incline template allows this to happen based on what types you're passing it rather than what types you specify.