//以下代码用VC6编译会出现错误error C2893,但用VS2008则编译通过。 //VC6必须将成员函数声明和实现一起放入类定义中才能编译通过。 //VC6爱与恨的纠结。 //结论:用C++标准的东东就不要用VC6。 //TemplateEx.h #include "stdafx.h" class APP { public: template<class T> int Fun1(T& t); template<class T> int Fun2(T& t); }; //TemplateEx.cpp #include "stdafx.h" #include "TemplateEx.h" template<class T> int APP::Fun1(T& t) { return t + 8; } template<class T> int APP::Fun2(T& t) { return Fun1(t) + 6; } int main(int argc, char* argv[]) { int y = 17; APP app; int x = app.Fun2(y); printf("x=%d/n",x); return 0; } //修改后的TemplateEx.h #include "stdafx.h" class APP { public: template<class T> int Fun1(T& t) { return t + 8; } template<class T> int Fun2(T& t) { return Fun1(t) + 6; } }; //修改后的TemplateEx.cpp #include "stdafx.h" #include "TemplateEx.h" int main(int argc, char* argv[]) { int y = 17; APP app; int x = app.Fun2(y); printf("x=%d/n",x); return 0; }