题主想写一个泛型的数组模板类,声明部分如下所示:
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) {
}
实在非常感谢各位 !
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
你的意思是还在一个头文件里,这样?
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) { }