请问一下关于模板类在两个不同类型的对象之间互相赋值的问题

akima 2016-06-08 01:28:58
楼主想写一个泛型的数组模板类,声明部分如下所示:

template <typename _Type>
class cArray {
public:
template <typename _OtherType>
inline cArray(const cArray<_OtherType> & Ref);
};

这个构造函数是用来支持下列语句的:

cArray<int> IntAry;
cArray<double> FloatAry( IntAry );

虽然该函数被声明为 inline,只是楼主不想把它的实现写在类声明部分,现在楼主想独立在其它地方实现这个构造函数,请问实现部分的语法应该怎么写呢 ?不是指该函数的内部细节的实现方式,而是指这个函数在类声明以外的部分要怎么写;
楼主写成下列方式,编译器是报错的:

template <typename _Type, typename _OtherType>
cArray<_Type>::cArray(const cArray<_OtherType> & Ref) {
}

实在非常感谢各位 !!
...全文
283 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
akima 2016-06-08
  • 打赏
  • 举报
回复
引用 4 楼 cutmelon 的回复:
[quote=引用 2 楼 etu_gamedev 的回复:] [quote=引用 1 楼 cutmelon 的回复:] 楼主是想把模板类的实现写在cpp里?趁早打消这个想法,具体参考https://www.zhihu.com/question/20630104
朋友,我懂你意思,不过我估计你没懂我意思,我的模板类的实现和声明是放在同一个 h 文件里面的,不过实现部分不是放在模板类的声明部分,而是声明之外的部分,很多模板都是这样做的; [/quote] 你的意思是还在一个头文件里,这样? cArray.h
template <typename _Type>
class cArray
{
public:
	template <typename _OtherType>
	cArray(const cArray<_OtherType> & Ref);
};

template <typename _Type>
template <typename _OtherType>
cArray<_Type>::cArray(const cArray<_OtherType> & Ref)
{
}
[/quote] 哈哈,谢谢朋友,可以了!! 这样子就很有用处了;
akima 2016-06-08
  • 打赏
  • 举报
回复
引用 3 楼 akirya 的回复:
template <typename _Type>template <typename _OtherType>
cArray<_Type>::cArray( const cArray<_OtherType> & Ref )
{
};
哈哈,谢谢朋友,可以了,原来可以一次性放多个 template 关键字的啊,想都没想到;
akima 2016-06-08
  • 打赏
  • 举报
回复
引用 4 楼 cutmelon 的回复:
[quote=引用 2 楼 etu_gamedev 的回复:] [quote=引用 1 楼 cutmelon 的回复:] 楼主是想把模板类的实现写在cpp里?趁早打消这个想法,具体参考https://www.zhihu.com/question/20630104
朋友,我懂你意思,不过我估计你没懂我意思,我的模板类的实现和声明是放在同一个 h 文件里面的,不过实现部分不是放在模板类的声明部分,而是声明之外的部分,很多模板都是这样做的; [/quote] 你的意思是还在一个头文件里,这样? cArray.h
template <typename _Type>
class cArray
{
public:
	template <typename _OtherType>
	cArray(const cArray<_OtherType> & Ref);
};

template <typename _Type>
template <typename _OtherType>
cArray<_Type>::cArray(const cArray<_OtherType> & Ref)
{
}
[/quote] 对对对,就是这样!!我先去试试行不行;
cutmelon 2016-06-08
  • 打赏
  • 举报
回复
引用 2 楼 etu_gamedev 的回复:
[quote=引用 1 楼 cutmelon 的回复:] 楼主是想把模板类的实现写在cpp里?趁早打消这个想法,具体参考https://www.zhihu.com/question/20630104
朋友,我懂你意思,不过我估计你没懂我意思,我的模板类的实现和声明是放在同一个 h 文件里面的,不过实现部分不是放在模板类的声明部分,而是声明之外的部分,很多模板都是这样做的; [/quote] 你的意思是还在一个头文件里,这样? cArray.h
template <typename _Type>
class cArray
{
public:
	template <typename _OtherType>
	cArray(const cArray<_OtherType> & Ref);
};

template <typename _Type>
template <typename _OtherType>
cArray<_Type>::cArray(const cArray<_OtherType> & Ref)
{
}
  • 打赏
  • 举报
回复
template <typename _Type>template <typename _OtherType>
cArray<_Type>::cArray( const cArray<_OtherType> & Ref )
{
};
akima 2016-06-08
  • 打赏
  • 举报
回复
引用 1 楼 cutmelon 的回复:
楼主是想把模板类的实现写在cpp里?趁早打消这个想法,具体参考https://www.zhihu.com/question/20630104
朋友,我懂你意思,不过我估计你没懂我意思,我的模板类的实现和声明是放在同一个 h 文件里面的,不过实现部分不是放在模板类的声明部分,而是声明之外的部分,很多模板都是这样做的;
cutmelon 2016-06-08
  • 打赏
  • 举报
回复
楼主是想把模板类的实现写在cpp里?趁早打消这个想法,具体参考https://www.zhihu.com/question/20630104

64,663

社区成员

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

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