c – 指针向量的迭代器
我读了另一篇文章,回答了关于指针向量的迭代器的问题.我尝试在我的代码中使用相同的概念,但我收到一些编译错误.我基于代码的代码示例是:
vector<c*> cvect; cvect.push_back(new sc); vector<c*>::iterator citer; for(citer=cvect.begin(); citer != cvect.end(); citer++) { (*citer)->func(); } 我想使用类似的概念为具有两个数据成员的类创建深度复制构造函数,这两个数据成员是指向对象的指针.我的代码与此类似: class MyContainer { vector<MyStuff*> vecOne; vector<MyStuff*> vecTwo; public: MyContainer(const MyContainer& other); }; MyContainer::MyContainer(const MyContainer& other) { // copy vector one vector<MyStuff*>::iterator vec1_itr; for (vec1_itr = other.vecOne.begin(); vec1_itr != other.vecOne.end(); vec1_itr++) { vecOne.push_back(new MyStuff(vec1_itr)); } // copy vector two vector<MyStuff*>::iterator vec2_itr; for (vec2_itr = other.vecTwo.begin(); vec2_itr != other.vecTwo.end(); vec2_itr++) { vecTwo.push_back(new MyStuff(vec2_itr)); } } 我得到一些编译错误,如:
我也为运算符得到一个错误!= …另一个向量的另一组相同的错误. 解决方法
你忘了取消引用迭代器了.试试这个:
vecOne.push_back(new MyStuff( **vec1_itr )); 编辑0: 是的,应该是双重引用(在上面修复).它应该是const_terator,因为你正在处理包含const的对象: vector<MyStuff*>::const_iterator vec1_itr; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |