C++中如何在类外定义模板类内的模板函数?

boodweb 2001-07-23 02:24:44
请问如下代码中如果类A中的Test函数要在类内声明,而在类外定义,定义语法应该是怎么样的?(就象现在注释掉的部分要实现的那样,但现在老是出错)
template <class T>
class A
{
public:
template <class T1>
void Test(T1 p){};
T a;
};
/*
template <class T,class T1>
void A<T>::Test(T1 p)
{
}
*/
int main(int argc, char* argv[])
{
A<int> a;
a.Test(12);
return 0;
}
...全文
466 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingsong99 2001-07-24
  • 打赏
  • 举报
回复
将第五行去掉,并把第六行的{}去掉。
即:
template<class T>
class A
{
public:
void Test(T p);
T a;
};
template<class T>
void A<T>::Test(T p)
{
.....
}
boodweb 2001-07-24
  • 打赏
  • 举报
回复
To qingsong99:
这样的话Test的参数在类定义的时候就确定了,不能达到函数模板的要求

To xiterator:
那请问知道现在有什么编译器可以识别吗
xiterator 2001-07-24
  • 打赏
  • 举报
回复
目前的大多数compiler还不能解析在类的声明之外定义的member template。C++ standard 对于在类定义之外定义member template 的标准写法如下(不过在VC++6.0下无法编译通过):
template <class T> template <class T1>
void A<T>::Test(T1 p)
{ }
boodweb 2001-07-23
  • 打赏
  • 举报
回复
To comet:
已经这样做了,以上所有代码都在一个.cpp文件里
comet 2001-07-23
  • 打赏
  • 举报
回复
全部类的声明、定义代码放在 .h 头文件中。
lvfengxun 2001-07-23
  • 打赏
  • 举报
回复
关注

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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