首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >boost::priority_queue未编译

boost::priority_queue未编译
EN

Stack Overflow用户
提问于 2017-12-08 19:37:20
回答 1查看 113关注 0票数 0

创建了一个定义了比较操作的boost::priority_queue。这是我的priority_queue的样子,

代码语言:javascript
复制
boost::heap::priority_queue<myObject*, boost::heap::compare<myObjectPtrCompare> > max_heap;

我的比较是这样定义的,

代码语言:javascript
复制
struct myObjectPtrCompare
{
    bool operator()(const myObject* lhs, const myObject* rhs) const
    {
        return (lhs->getTime() < rhs->getTime());
    }
};

我把它当做,

代码语言:javascript
复制
myObject* obj1 = static_cast<myObject*>(base1);

“base1”是“myBase”类(myObject的基类)的对象

其中用于比较的myObject和getTime()被定义为,

代码语言:javascript
复制
class myObject : public myBase {
    Time getTime() const { return time; }
.
.
. 
...
}

编译这段代码会得到这个错误,

代码语言:javascript
复制
c:\Projects\pq_test.cpp(27): error C2662: 'void boost::heap::priority_queue<myObject*,boost::heap::compare<myObjectPtrCompare>,boost::parameter::void_,boost::parameter::void_,boost::parameter::void_>::push(myObject *const &)' : cannot convert 'this' pointer from 'const boost::heap::priority_queue<myObject *,boost::heap::compare<myObjectPtrCompare>,boost::parameter::void_,boost::parameter::void_,boost::parameter::void_>' to 'boost::heap::priority_queue<myObject *,boost::heap::compare<myObjectPtrCompare>,boost::parameter::void_,boost::parameter::void_,boost::parameter::void_> &'
1>          Conversion loses qualifiers

使用Visual Studio2013 C++。我知道我在常量正确性方面做了一些错误的事情,但我不能找出哪里错了。任何帮助都是非常感谢的。

蒂娅!

EDIT1:@Maxim Egorushkin :谢谢!我看到了,

代码语言:javascript
复制
myObject* obj1 = static_cast<myObject*>(base1);

是一个常量函数,它的签名是,

代码语言:javascript
复制
void workOnObj(myBase* base1) const;    

因此,我将我的priority_queue的定义更改为const as,

代码语言:javascript
复制
const boost::heap::priority_queue<Container*, boost::heap::compare<ContainerPtrCompare> > max_heap;

并期望错误会消失,但它仍然有相同的错误。

EN

回答 1

Stack Overflow用户

发布于 2017-12-08 19:43:17

错误消息指出代码在const priority_queue对象上调用非常数priority_queue::push。您需要一个非常数priority_queue对象才能对其调用push

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47713637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档