在外部类中使用类模板时如何定义内部类构造函数?
Posted
技术标签:
【中文标题】在外部类中使用类模板时如何定义内部类构造函数?【英文标题】:How to define inner class constructor when using class template in the outer class? 【发布时间】:2019-04-14 01:04:17 【问题描述】:当外部类是模板时,如何定义嵌套类构造函数?
我尝试删除模板参数并且它有效。但是对于我正在做的事情,我需要这个价值。
我尝试使用带有和不带有-std=c++11
的g++(没有区别)。
我不想把我的代码放在头文件中,所以我没有这样尝试
#include <cstddef>
template <size_t M_SIZE=20>
class Outer
class Inner
Inner();
;
;
//Outer::Inner::Inner()
int main()
return 0;
当您取消注释该行时会发生这种情况
cl.cpp:9:1: error: 'Outer' is not a class, namespace, or enumeration Outer::Inner::Inner() ^ cl.cpp:4:7: note: 'Outer' declared here class Outer ^ 1 error generated.
shell 返回 1
【问题讨论】:
【参考方案1】:template<size_t mSize> Outer<mSize>::Inner::Inner()
但像往常一样,如果您打算在单独的文件中定义模板化实体,则必须在标题中显式实例化它们:
template class Outer<42>;
【讨论】:
以上是关于在外部类中使用类模板时如何定义内部类构造函数?的主要内容,如果未能解决你的问题,请参考以下文章