我有以下问题,嵌套类(在本例中为struct
)命名空间和返回类型
class Example
{
struct Node { /* with all the methods it needs */ }
Node * func();
}
现在我想把func
的实现放在课外。所以我做的是:
Example::Node * Example::func()
{
return nullptr;
}
它工作正常,直到我制作了example
模板
template<typename T>
class Example {/* all the same here */}
template <typename T>
Example<T>::Node * Example<T>::func()
{
return nullptr;
}
我遇到很多错误。然后我试了
template <typename T>
Example::Node * Example<T>::func()
{
return nullptr;
}
我收到错误的地方:&#34;使用类模板需要模板参数列表&#34;
据我所知Example<T>::func()
是正确的,因为这意味着函数属于该命名空间。但我不确定我的函数的返回类型。有什么帮助吗?
答案 0 :(得分:3)
模板与非模板不同,以后可能会专用。在这些未知专业化中,Example<T>::Node
可能是静态成员的名称,或者名称可能根本不存在。
标准要求您使用typename
明确指定Example<T>::Node
是类型名称,即模板类Example
的成员类型名称,而不是静态成员的其他名称Example
。即。
template <typename T>
typename Example<T>::Node * Example<T>::func()
{
return nullptr;
}