Boost logo

Boost Users :

Subject: Re: [Boost-users] boost::priority_queue help
From: Ram (sourceopen_at_[hidden])
Date: 2017-12-09 04:32:59


Yes thanks Steven! The queue was modified inside a const method of the
class. I corrected it but now I get these warning(we treat them as errors).
These are the warnings,

1> priority_queue_example.cpp
1>c:\Projects\lib\boost\boost\heap\detail\stable_heap.hpp(102): error
C2220: warning treated as error - no 'object' file generated
1>c:\Projects\lib\boost\boost\heap\detail\stable_heap.hpp(102): warning
C4100: 'rhs' : unreferenced formal parameter
1> c:\Projects\lib\boost\boost\heap\detail\stable_heap.hpp(102) :
while compiling class template member function 'boost::heap::detail::size_
holder<false,size_t>::size_holder(const
boost::heap::detail::size_holder<false,size_t>
&)'
1> c:\Projects\lib\boost\boost\heap\detail\stable_heap.hpp(189) :
see reference to function template instantiation 'boost::heap::detail::size_
holder<false,size_t>::size_holder(const
boost::heap::detail::size_holder<false,size_t>
&)' being compiled
1> c:\Projects\lib\boost\boost\heap\detail\stable_heap.hpp(151) :
see reference to class template instantiation
'boost::heap::detail::size_holder<false,size_t>'
being compiled
1> c:\Projects\lib\boost\boost\heap\priority_queue.hpp(65) : see
reference to class template instantiation 'boost::heap::detail::heap_
base<T,myObjectPtrCompare,false,unsigned __int64,false>' being compiled
1> with
1> [
1> T=myObject *
1> ]
1> c:\Projects\priority_queue_example.h(193) : see reference to
class template instantiation 'boost::heap::priority_queue<myObject
*,boost::heap::compare<myObjectPtrCompare>,boost::parameter::void_,boost::
parameter::void_,boost::parameter::void_>' being compiledcompare<
ObjectPtrCompare>,boost::parameter::void_,boost::parameter::void

My priority_queue is declared as,

mutable boost::heap::priority_queue<myObject*,
boost::heap::compare<myObjectPtrCompare>
> hp;

Can you please help me fix this, I have been trying to for 2 days. Not sure
what this means.

This is my comparison class defined,

struct myObjectPtrCompare
{
bool operator()(const myObject* lhs, const myObject* rhs) const
{
return (lhs->getProp() < rhs->getProp());
}
};

Can you please help with this? I understand that 'rhs' is unused, but in
my implementation, it is used but the warning is pointing to boost code. I
don't understand it.

Thanks!

On Sat, Dec 9, 2017 at 9:56 AM, Steven Watanabe via Boost-users <
boost-users_at_[hidden]> wrote:

> AMDG
>
> On 12/08/2017 04:38 AM, Ram via Boost-users wrote:
> > <snip>
> >
> > c:\Projects\pq_test.cpp(27): error C2662: 'void
> > boost::heap::priority_queue<myObject*,boost::heap::
> compare<myObjectPtrCompare>>::push(myObject
> > *const &)' : cannot convert 'this' pointer from 'const
> > boost::heap::priority_queue<myObject
> > *,boost::heap::compare<myObjectPtrCompare>>'
> > to 'boost::heap::priority_queue<myObject
> > *,boost::heap::compare<myObjectPtrCompare>>
> > &'1> Conversion loses qualifiers
> >
> > Using Visual Studio 2013 C++. I understand that I am doing something
> wrong
> > with const correctness, but I am not able to figure out what is wrong.
> Any
> > help is appreciated.
> >
>
> You're trying to push onto a const priority_queue.
>
> In Christ,
> Steven Watanabe
>
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
>



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net