在这个函数中,我想在向量队列中搜索'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}}这个'参数'丢弃限定符
答案 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
参数传递给成员函数。