Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以为基本字符串设置模板<>;::迭代器?_C++_Templates_C++11_Stdstring - Fatal编程技术网

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 that
typename std::basic\u string::iterator it
。Make that
typename std::basic\u string::iterator it
。只是在粘贴过程中泛化了代码。。。ill fix拼写错误只是在粘贴过程中泛化代码。。。我来修一下打字错误