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



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

我尝试删除模板参数,它可以工作。但我正在做的事情需要这种价值。我尝试使用有和没有-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.

壳返回 1

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

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

template class Outer<42>;

最新更新