类的成员函数是一个模板函数, 但把这个模板成员函数的定义放在类的外面,就怎么都通不过.

worldbankc 2008-11-09 06:54:53
//类的成员函数是一个模板函数, 但把这个模板函数的定义放在类的外面,就怎么都通不过.

class type_a{ //类的接口在类中写.
public:
template<typename T1,typename T2> void paixu(T1 **p,const int size,T2 T1::*pt); //排序,T1是该类内部定义的数据类型, T2是某种普通数据类型


string str;
int val;
};

void type_a::paixu<typename T1,typename T2>(T1 **p,const int size,T2 T1::*pt) //成员函数的实现写在类的外面. 但编译通不过. 不知道错在哪里
{}

------------------Configuration: - Win32 Release--------------------
Compiling...
mian.cpp
E:\我的文档\Visual C \StoClass_2.h(1104) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
执行 cl.exe 时出错.

mian.obj - 1 error(s), 0 warning(s)
...全文
125 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwypy 2008-11-09
  • 打赏
  • 举报
回复
那就没有办法了。等待高手来解决。
lucky_06 2008-11-09
  • 打赏
  • 举报
回复
对于 VC++ 6.0 的编译器

template的声明和定义只能放在同一个文件中.

放在不同的文件会编译不过
worldbankc 2008-11-09
  • 打赏
  • 举报
回复
template <typename T1,typename T2>

这样编译也是通不过的.我试了. 换编译器更不可能. VC++6.0 我用了七年都不是很熟悉. 换了又要研究十年.我可没精力.
hhyttppd 2008-11-09
  • 打赏
  • 举报
回复
template<typename T1,typename T2>
void type_a::paixu(T1 **p,const int size,T2 T1::*pt) //成员函数的实现写在类的外面. 但编译通不过. 不知道错在哪里
{}
lucky_06 2008-11-09
  • 打赏
  • 举报
回复
声明和定义都要加上
template 前序的


例如:

template <typename T1,typename T2>
void type_a::paixu(……);
太乙 2008-11-09
  • 打赏
  • 举报
回复
换一个编译器试试~~

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧