是否可以模板basic_string<>::迭代器?

Is it possible to template basic_string<>::iterator?

本文关键字:lt gt 迭代器 string basic 是否      更新时间:2023-10-16

可能重复:
我必须将“模板”以及“typename;关键词?

我使用g++4.6,并试图根据所使用的字符类型来模板化我的类,但我的变量不仅是字符,还有这些字符的字符串。所以我尝试了这样的东西:

template<typename T>
class Node
//... 
//constructor
Node(std::basic_string<T> str, std::basic_string<T>::iterator it)
{
}
//usage 
Node<char16_t> start;

但我明白'std::basic_string&lt_CharT,std::char_traits&lt_CharT>,std::分配器&lt_Tp1>::迭代器"不是类型
当我将构造函数arg列表中的第二个T替换为char16_T时,它会编译。

为什么您的构造函数不也称为FSDNode

std::basic_string<T>::iterator是一个依赖类型,因为它依赖于模板参数T。因此,您需要将typename添加到参数类型中。

FSDNode(std::basic_string<T> str, typename std::basic_string<T>::iterator it)
{
}