C++ C++;你能做一个模板类的迭代器吗?
我正在做一个类项目,为此我们必须创建一个从vector派生的模板类,然后能够从中添加和删除元素 我想我会创建类的和迭代器,因为它是一个向量,我想我应该可以使用“this”创建迭代器,但是“this”是一个指针,所以它不起作用C++ C++;你能做一个模板类的迭代器吗?,c++,templates,vector,iterator,template-classes,C++,Templates,Vector,Iterator,Template Classes,我正在做一个类项目,为此我们必须创建一个从vector派生的模板类,然后能够从中添加和删除元素 我想我会创建类的和迭代器,因为它是一个向量,我想我应该可以使用“this”创建迭代器,但是“this”是一个指针,所以它不起作用 如果我尝试这样做:vector::iterator p我有很多错误,所以我可以这样做吗?或者我只需要找到一个不同的解决方案吗?首先,您不应该继承自std::vector,因为它没有虚拟析构函数。有关更多信息,请参阅 如果要使用std::vector中的迭代器,则必须使用us
如果我尝试这样做:
vector::iterator p
我有很多错误,所以我可以这样做吗?或者我只需要找到一个不同的解决方案吗?首先,您不应该继承自std::vector
,因为它没有虚拟析构函数。有关更多信息,请参阅
如果要使用std::vector
中的迭代器
,则必须使用using
指令将其导入类的作用域
#include <vector>
template < typename T >
class MyVector : std::vector<T>
{
public:
using typename std::vector<T>::iterator;
};
int main()
{
MyVector<double>::iterator p;
}
#包括
模板
类MyVector:std::vector
{
公众:
使用typename std::vector::iterator;
};
int main()
{
MyVector::迭代器p;
}
您不应该继承自std::vector
,因为它没有虚拟析构函数。“您不应该继承自std::vector”状态的公认答案实际上,std::vector的公共继承没有错。”。不是很好的例子;)