gex*_*ide 6 c++ templates constructor
假设我用模板构造函数编写模板类,就像那样.
template<typename T>
class X{
template<typename S>
X(X<S> x){}
};
Run Code Online (Sandbox Code Playgroud)
编译好.但是,当我尝试在模板声明之外定义构造函数时,如下所示:
template<typename T>
class X{
template<typename S>
X(X<S> x);
};
template<typename T, typename S>
X<T>::X(X<S> y){}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
error: invalid use of incomplete type ‘class X<T>’
Run Code Online (Sandbox Code Playgroud)
为什么?是否无法在类声明之外定义模板类的模板构造函数?
Bo *_*son 11
您有两个级别的模板,必须单独指定它们.
template<typename T>
template<typename S>
X<T>::X(X<S> y){}
Run Code Online (Sandbox Code Playgroud)
试试这个:
template<typename T>
template<typename S>
X<T>::X()( X<S> y )
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3551 次 |
| 最近记录: |