在外部类中使用类模板时如何定义内部类构造函数?

时间:2019-04-14 01:04:18

标签: c++ c++11 g++

当外部类是模板时,如何定义嵌套类的构造函数?

我尝试删除模板参数,它可以工作。但是我需要这种价值来做我正在做的事情。 我尝试使用带有+和不带有--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:错误:“外部”不是类,名称空间或枚举 外部::内部::内部(){} ^ cl.cpp:4:7:注意:此处声明为“外部” 外层课程{       ^ 产生1个错误。

shell返回1

1 个答案:

答案 0 :(得分:0)

template<size_t mSize> Outer<mSize>::Inner::Inner() {}

但是,像往常一样,如果您打算在单独的文件中定义模板化实体,则必须在标头中显式实例化它们:

template class Outer<42>;