std :: find上的错误在对象向量上升

时间:2013-11-02 15:24:11

标签: c++ vector compiler-errors iteration std

在这个函数中,我想在向量队列中搜索'vertex'。

bool PriorityQueue::contains(VertexPriority vertex) const {
     return (std::find(queue.begin(), queue.end(), vertex) != queue.end());
}

矢量队列是此对象的一个​​实例:

std::vector<VertexPriority> queue;

我的运算符重载是这样的:

bool operator==(const VertexPriority& v){ return (v.vertex == vertex); }

如何解决此错误?

错误上升是下一个错误,并且在每个错误开始时都有以下路径:

  

C:\开发-CPP \包括\ C ++ \ 3.4.2 \位\ stl_algo.h

     

在函数`_RandomAccessIterator std :: find(_RandomAccessIterator,_RandomAccessIterator,const _Tp&amp;,std :: random_access_iterator_tag)[with _RandomAccessIterator = __gnu_cxx :: __ normal_iterator&gt; &gt;,_ Tp = VertexPriority]':

     

从`_InputIterator std :: find(_InputIterator,_InputIterator,const _Tp&amp;)实例化[与_InputIterator = __gnu_cxx :: __ normal_iterator&gt; &gt;,_ Tp = VertexPriority]'

     

传递{boverPriority :: operator ==(const VertexPriority&amp;)的'{1}}这个'参数'丢弃限定符

1 个答案:

答案 0 :(得分:2)

使运算符const:

bool operator==(const VertexPriority& v) const 
{ 
    return (v.vertex == vertex); 
}

请注意,这会使成员函数const本身,这使编译器能够在const类型的VertexPriority对象上调用它。

这实际上正是编译器所说的:

passing const VertexPriority' as this' argument of `bool VertexPriority::operator==(const VertexPriority&)' discards qualifiers

作为const的VertexPriority对象作为隐式this参数传递给成员函数。