调用有关问题

调用问题
为什么我将模板声明放在一个头文件中,而定义放在一个源文件中,测试又放在一个源文件中,当我测试的时候调用函数会出现
错误 3 error LNK2019: 无法解析的外部符号 "void __cdecl Math::Swap<int>(int &,int &)" (??$Swap@H@Math@@YAXAAH0@Z),该符号在函数 _main 中被引用 c:\Users\CHEN\documents\visual studio 2012\Projects\ConsoleApplication7\ConsoleApplication7\源.obj ConsoleApplication7


这是为什么??
我放在一个项目中的,即使我使用namespace来制定一个区域也不行,只有当我把测试放在函数的定义源文件中的时候是没有问题的,这是为什么啊??不明白

------解决方案--------------------
模板的实现 最好放在头文件的吧!