<分区>
我有以下内容:
#include <vector>
template <class T>
class A
{
public:
struct S
{
int a;
};
std::vector<S> returnStructs(void);
};
template <class T>
std::vector<A<T>::S> A<T>::returnStructs(void)
{
}
int main(void)
{
}
但是当我尝试编译时我得到:
error: template argument for template type parameter must be a type; did you forget
'typename'?
std::vector<A<T>::S> A<T>::returnStructs(void)
^
typename
所以我把那条线换掉了:
std::vector<A<int>::S> A<T>::returnStructs(void)
^
'int' instead of 'T'
但是我得到一个新的编译器错误:
error: return type of out-of-line definition of 'A::returnStructs' differs from that in the
declaration
std::vector<A<int>::S> A<T>::returnStructs(void)
~~~~~~~~~~~~~~~~~~~~~~ ^
那么关于如何解决这个问题有什么想法吗?
我也意识到我可以从类 A 中取出结构 S 并解决所有这些问题,但我仍然觉得应该可以在不更改类 A 的情况下解决这个问题。