如何定义一个带模板成员函数的非模板类?

hellodudu 2008-04-09 10:21:18
我想定义一个普通类,其中有一个模板成员函数
应该如何定义?
...全文
243 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellodudu 2008-04-09
  • 打赏
  • 举报
回复
晕死 我用vc7 一开始就用三楼的方法定义的,一直报错illegal use of explicit template arguments
刚关了重开 竟然又能编译通过了
lc19890326 2008-04-09
  • 打赏
  • 举报
回复
//声明
class A
{
template <typename T>
void B();
}
//定义
template <typename T>
void A::B()
{ }
注意这个模板成员不能为虚函数

仅供参考

zgjxwl 2008-04-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 akirya 的回复:]
C/C++ code
class test
{
public:
template<class T>
void func(T )
{
//your code
}
};
[/Quote]
把分给他把
taodm 2008-04-09
  • 打赏
  • 举报
回复
你用的VC6?
hastings 2008-04-09
  • 打赏
  • 举报
回复
忘用格式帖代码了:
#define MAX 128
class B
{
int m_i[MAX];
int m_len;
public:
template<typename T>
B(T begin,T end)
{
int i=0;
for(;i<MAX&&begin!=end;++i,++begin)
m_i[i]=*begin;
m_len=i;

}
friend std::ostream& operator<<(std::ostream& os,const B& b)
{
int i=0;
for(;i<b.m_len;++i)
os<<b.m_i[i]<<' ';
return os<<'\n';
}
};
int main()
{
int a[]={1,4,7,8,5,2};
std::vector<int> b(a,a+sizeof a/sizeof a[0]);
B c(a,a+sizeof a/sizeof a[0]);
B d(b.begin(),b.end());
cout<<c;
cout<<d;
return 0;
}
hastings 2008-04-09
  • 打赏
  • 举报
回复
#define MAX 128
class B
{
int m_i[MAX];
int m_len;
public:
template<typename T>
B(T begin,T end)
{
int i=0;
for(;i<MAX&&begin!=end;++i,++begin)
m_i[i]=*begin;
m_len=i;

}
friend std::ostream& operator<<(std::ostream& os,const B& b)
{
int i=0;
for(;i<b.m_len;++i)
os<<b.m_i[i]<<' ';
return os<<'\n';
}
};
int main()
{
int a[]={1,4,7,8,5,2};
std::vector<int> b(a,a+sizeof a/sizeof a[0]);
B c(a,a+sizeof a/sizeof a[0]);
B d(b.begin(),b.end());
cout<<c;
cout<<d;
return 0;
}
  • 打赏
  • 举报
回复

class test
{
public:
template<class T>
void func(T )
{
//your code
}
};
HelloDan 2008-04-09
  • 打赏
  • 举报
回复
定义成模板的类就行了。

64,646

社区成员

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

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