Code Bye

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

题主想写一个泛型的数组模板类,声明部分如下所示:
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) {
}
实在非常感谢各位 !
解决方案

10

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

30

引用:
Quote: 引用:

题主是想把模板类的实现写在cpp里?趁早打消这个想法,具体参考https://www.zhihu.com/question/20630104

朋友,本人懂你意思,不过本人估计你没懂本人意思,本人的模板类的实现和声明是放在同一个 h 文件里面的,不过实现部分不是放在模板类的声明部分,而是声明之外的部分,很多模板都是这样做的;

你的意思是还在一个头文件里,这样?
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)
{
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一下一下关于模板类在两个不同类型的对象之间互相赋值的问题