繁体   English   中英

嵌套在模板类中的模板类的前向声明

[英]Forward declaration of template class nested inside template class

您可以在普通类中向前声明模板内部类,并将定义的类型用作任何其他向前声明的类型。

class Outer {
    template <int N> class Inner;
    typedef Inner<0> Inner0;
    Inner0* f();
};

template<int N>
class Outer::Inner {};

现在,如果Outer本身是模板类,是否有办法将Inner的声明保留在Outer的声明之外? 就像是 :

template<typename T>
class Outer {
    template <int N> class Inner;
    typedef Inner<0> Inner0;
    Inner0* f();
};

template<typename T, int N> //This won't work
class Outer<T>::Inner {};

是否有正确的语法使用正确的模板参数声明Outer?

尝试以下

template<typename T>
template <int N>
class Outer<T>::Inner {};

根据C ++标准(14.5.2成员模板)

1可以在类或类模板中声明模板; 这样的模板称为成员模板。 可以在其类定义或类模板定义之内或之外定义成员模板。 在类模板定义之外定义的类模板的成员模板,应使用类模板的模板参数和成员模板的模板参数来指定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM