使用向量迭代器时遇到错误

时间:2012-03-18 04:38:35

标签: c++ vector

在我的程序中,我已经创建了一个名为“Transition”的类。 当我创建一个名为delta_的Transition类型的向量。 当我稍后在我的一个函数实现我已经声明delta_的类时,我尝试使用迭代器,其语法如下:

vector<Transition>::iterator it;
it=this->delta_.begin();

我遇到了这两个错误:

  

在构造函数`__gnu_cxx :: __ normal_iterator&lt; _Iterator, Container&gt; :: _normal_iterator(const __gnu_cxx :: __ normal_iterator&lt; _Iter,_Container&gt;&amp;)[with _Iter = const Fa :: Transition *, _Iterator = Fa :: Transition *,_ Container = std :: vector&gt;]':

     

const Fa::Transition* const' to Fa :: Transition *'无效转换

现在我真的不知道错误在哪里。有人可以帮忙!!

2 个答案:

答案 0 :(得分:2)

让我猜一下,您是否正在it=this->delta_.begin();类的const方法中进行delta_,并且it是该类的成员?

该方法的constness保证类的成员不会更改。但变量iterator具有非常量类型delta_,这使得更改成员std::vector的可能性使保护损坏。

begin()有两个重载方法iterator begin (); const_iterator begin () const;

begin()

如果在const的方法中使用const_iterator,编译器会调用第二个。{/ p>

所以你需要拒绝方法的constness,或者使用{{1}}。

另一种可能的方法,我不建议因为对象的模糊不变,将你的向量放在堆上并使用指向它的指针进行操作。

答案 1 :(得分:1)

thisdelta_似乎是const,导致begin()返回const_iterator