gpt4 book ai didi

c++ - 模板类内部模板类的函数返回类型

转载 作者:太空狗 更新时间:2023-10-29 20:19:36 24 4
gpt4 key购买 nike

我正在使用 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');
}

现在编译器给出错误:

main.cpp:14:1: error: ‘N’ does not name a type

如果我在类外使用函数原型(prototype)作为 C<T>::N *C<T>::fun(D d) ,编译器报错:

main.cpp:14:1: error: need ‘typename’ before ‘C::N’ because ‘C’ is a dependent scope

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

最佳答案

如编译错误提示,使用typename

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

关于c++ - 模板类内部模板类的函数返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com