我正在开发一个类项目,为此我们必须创建一个从向量派生的模板类,然后能够从中添加和删除元素。
我想我会创建一个类的迭代器,因为它是一个向量,我认为我应该能够使用“this”并创建迭代器,但“this”是一个指针,所以它不起作用。
如果我尝试这个:vector<T>::iterator p;
我得到很多错误,所以我什至可以这样做还是只需要找到不同的解决方案?
我正在开发一个类项目,为此我们必须创建一个从向量派生的模板类,然后能够从中添加和删除元素。
我想我会创建一个类的迭代器,因为它是一个向量,我认为我应该能够使用“this”并创建迭代器,但“this”是一个指针,所以它不起作用。
如果我尝试这个:vector<T>::iterator p;
我得到很多错误,所以我什至可以这样做还是只需要找到不同的解决方案?
首先,您不应该继承自std::vector
,因为它没有虚拟析构函数。有关更多信息,请参阅不应从 std::vector 继承。
如果你想使用iterator
from你必须使用指令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;
}