C++嵌套类函数返回类型和命名空间
C++ nested class function return type and namespace
我有以下问题,嵌套类(在本例中为 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;
}
我在哪里得到错误:"使用类模板需要模板参数列表"
据我所知Example<T>::func()
是正确的,因为这意味着该函数属于该命名空间。但我不确定我的函数的返回类型。有什么帮助吗?
模板与非模板不同,它们以后可能会专门化。在这些未知的专用化中,Example<T>::Node
可能是静态成员的名称,或者该名称可能根本不存在。
该标准要求您使用typename
来明确指定Example<T>::Node
是类型的名称,即模板类Example
的成员类型名称,而不是其他名称,例如Example
的静态成员。
template <typename T>
typename Example<T>::Node * Example<T>::func()
{
return nullptr;
}
相关文章:
- 从父命名空间重载类型
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何对命名空间限定类型进行类型定义?
- Boost.Python :C++模板类型匹配的嵌套命名空间
- 如何为缺少预定义运算符而不扩展命名空间"std"的标准类型定义运算符>> (istream &, ...)?
- 如何理解c++中在命名空间内部定义的枚举类型enum
- 动态调用具有不同返回类型的相同命名函数
- 为什么找不到使用命名空间中定义的类型实例化的 std::weak_ptr 的重载运算符==?
- C++ ,错误:命名空间'std'中的'shared_ptr'未命名模板类型
- 错误:命名空间"std"中没有名为"invoke_result_t"的类型 GCC-7
- 命名空间中的'bad_cast' 'std' 未命名类型错误
- 使用用作类型 C++ 的命名空间
- 命名空间'std'中的'vector'没有模板类型
- C++嵌套类函数返回类型和命名空间
- 使用<cstdint>带或不带命名空间的类型
- 从命名空间返回对象是否安全
- 将using语句应用于函数的返回类型,而不应用于整个命名空间
- 具有自定义返回类型的全局命名空间中的友元函数
- C++11:正则枚举、命名空间和类型安全
- 在不同的头文件中跨相同的命名空间进行类型定义