我有一个模板化的类和一个别名类型。我想将此类型用作成员函数的返回值,但它不能编译。

//file.h
template<class T>
class Test {
public:
    using testing = T;
    T value;
    testing foo();
};

//file.cpp
template<class T>
testing Test<T>::foo() { //error 'testing' does not name a type
    //code
}

我该如何运作?

最佳答案

通过以下方式更改foo的定义:

template<class T>
typename Test<T>::testing Test<T>::foo() {
}

甚至不像@ Jarod42所建议的那样冗长
template<class T>
auto Test<T>::foo() -> testing {
}

你也应该读Why can templates only be implemented in the header file

关于c++ - 如何返回在类中具有别名的类型的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53907859/

10-13 08:19