C++ 是否可以为基本字符串设置模板<>;::迭代器?
可能重复:C++ 是否可以为基本字符串设置模板<>;::迭代器?,c++,templates,c++11,stdstring,C++,Templates,C++11,Stdstring,可能重复: 我使用的是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
我使用的是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 str,std::basic_string::iterator it)
{
}
//用法
节点启动;
但我明白了
“std::basic_string::iterator”不是类型当我将构造函数参数列表中的第二个T替换为char16\T时,它会编译。为什么你的构造函数不也被称为
FSDNode
std::basic_string::iterator
是一种依赖类型,因为它依赖于模板参数T
。因此,您需要向参数类型添加typename
FSDNode(std::basic_string<T> str, typename std::basic_string<T>::iterator it)
{
}
FSDNode(std::basic_string str,typename std::basic_string::iterator it)
{
}
为什么您的构造函数不也被称为FSDNode
std::basic_string::iterator
是一种依赖类型,因为它依赖于模板参数T
。因此,您需要向参数类型添加typename
FSDNode(std::basic_string<T> str, typename std::basic_string<T>::iterator it)
{
}
FSDNode(std::basic_string str,typename std::basic_string::iterator it)
{
}
Make thattypename std::basic\u string::iterator it
。Make thattypename std::basic\u string::iterator it
。只是在粘贴过程中泛化了代码。。。ill fix拼写错误只是在粘贴过程中泛化代码。。。我来修一下打字错误