我正在研究一个类项目,为此我们必须创建一个派生自vector的模板类,然后才能添加和删除它中的元素。
我以为我会制作和类的迭代器,因为它是一个向量,我认为我应该能够使用"这个"然后创建迭代器,但是这个"是一个指针,所以没有工作。
如果我试试这个:vector<T>::iterator p;
我会收到很多错误,所以我甚至可以这样做,或者我只是需要找到不同的解决方案?
答案 0 :(得分:0)
首先,您不应该继承std::vector
,因为它没有虚拟析构函数。有关详细信息,请参阅Thou shalt not inherit from std::vector。
如果您想使用iterator
中的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;
}