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++;你能做一个模板类的迭代器吗?_C++_Templates_Vector_Iterator_Template Classes - Fatal编程技术网

C++ C++;你能做一个模板类的迭代器吗?

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派生的模板类,然后能够从中添加和删除元素

我想我会创建类的和迭代器,因为它是一个向量,我想我应该可以使用“this”创建迭代器,但是“this”是一个指针,所以它不起作用


如果我尝试这样做:
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的公共继承没有错。”。不是很好的例子;)