C++:如何返回在模板类中定义的别名
C++: How to return an alias defined in a template class?
所以我有一个模板类(缩写),比如:
template <typename keyT, typename valueT>
class hashMap {
public:
using dataT = pair<keyT,valueT>;
using maybeT = optional<dataT>;
maybeT notFound = optional<dataT> ();
maybeT find(keyT &v);
<snip>
};
当我试图定义find()时,我有
template <typename keyT, typename valueT>
hashMap::maybeT hashMap<keyT,valueT>::find(keyT &k)
{
和hashMap::maybeT未被识别("应为类或命名空间")。使用keyT和valueT限定hashMap也没有帮助。
如何导出这些别名(或者typedef,如果有办法的话)。
您需要消除从属名称的歧义:
template <typename keyT, typename valueT>
typename hashMap<keyT, valueT>::maybeT hashMap<keyT,valueT>::find(keyT &k)
// ^^^^^
{
// ...
}
(既然你在写一个模板,那么你最好保持所有内容都是内联的,并减少代码噪音。否则你应该在成员函数声明中添加inline
。)
相关文章:
- 部分定义/别名模板模板参数
- 使用定义函数模板别名
- 在Qt中注册自定义元类型的别名类型
- 使用外部定义的模板类型作为模板参数的更通用模板的模板别名
- 参数化类的别名(或类型定义)内部类
- 为什么此模板定义了一组匹配void的别名类型
- 如何定义别名以通过结构访问枚举类成员
- C++ 中模板化别名的类型定义
- 别名 私有子结构中的静态成员的定义
- 将别名定义为操作员
- 使用自定义deleter类型定义std::shared_ptr的别名
- 如何使用别名声明模板化函数类型定义
- C++对类/结构中定义的公共别名(typdef/using)的循环依赖
- 在不键入别名类型的完整声明的情况下,无法从类模板定义中访问类型的类型别名
- 是否可以将类型别名定义为constexpr函数
- 是否可以为模板模板参数定义别名
- C 使用模板为结构定义别名
- 定义类型别名时出现语法错误
- 为map的map定义别名
- 静态变量的基本类型定义/别名