在模板化类的typedef之后使用typename初始化函数时出错
Error when initializing function with typename after typedef in templated class
下面的代码无法编译:
//in definition
typedef double value_type;
//in implementation
template <typename T>
typename value_type sequence<T>::current( )
{
return data[used-1];
}
将"typename value_type"替换为"double"会使代码按预期编译和工作。为什么我不能使用typename value_type来代替double,如果我已经将value_type赋值为等同于double?
假设定义中的是指sequence<>
类模板定义中的,实现中的是指sequence<>
类模板的current()
成员函数定义中的,那么你要写的是:
template <typename T>
typename sequence<T>::value_type sequence<T>::current( )
// ^^^^^^^^^^^^^
{
return data[used-1];
}
还要记住,除非使用显式特化,否则类模板的成员函数的定义应该放在包含类模板定义的同一个头文件中。
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 内联映射初始化的动态atexit析构函数崩溃
- 如何在C++中初始化嵌套类中的2个memeber
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 没有用于初始化C++中的变量模板的匹配构造函数
- 在未初始化映射的情况下,将值插入到映射的映射中
- C++成员初始化
- 为什么在C++中首先初始化成员类
- 同时具有"聚合初始化"和"模板推导"
- 初始化具有非默认构造函数的std::数组项的更好方法
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 向模板化静态成员初始化添加和不添加'typename'都会出错
- 在模板化类的typedef之后使用typename初始化函数时出错
- 如何初始化Typename为T的类对象
- 使用模板typename初始化指针