小编Alo*_*lok的帖子

模板类中模板类的函数返回类型

我正在使用c ++模板,并在模板类中创建了一个模板类。

情况是这样的:

template <typename T>
class C {
    public:
    class N {
        T v;
    };

    template <typename D>
    N *fun(D d);
};

template <typename T>
template <typename D>
N *C<T>::fun(D d) {
}

int main() {
    C<int> obj;
    obj.fun('c');
}
Run Code Online (Sandbox Code Playgroud)

现在编译器给出错误为:

main.cpp:14:1:错误:'N'没有命名类型

如果我在类外部使用函数原型 C<T>::N *C<T>::fun(D d),则编译器将给出错误:

main.cpp:14:1:错误:在'C :: N'之前需要'typename'是因为'C'是一个依赖范围

如果我在类中定义定义,那么它可以正常工作。但是我不想使其内联,应该怎么做?

c++ templates

3
推荐指数
1
解决办法
67
查看次数

标签 统计

c++ ×1

templates ×1