>>306
別にヘッダファイルに書かなければならないというわけではないが、
とりあえず(厳密な説明ではないが)以下を理解しな。
・templateはインスタンス化してクラス定義や関数定義を生成するためのもの。
・templateをインスタンス化するにはtemplateの定義が必要。
・templateのインスタンス化はコンパイル時に行われる。
・コンパイル時にコンパイラが参照できるのはコンパイル中のソースとそこにincludeされたソースだけ。

そのうえで考えてみな。
複数のソースで利用される汎用的なtemplateの定義はどこに置いてどのように利用するのが自然で使いやすい方法か?