0

祝大家有美好的一天!我有:

“A类.h”

class ClassA
{
....
public:
priority_queue<OBJECT*, vector<OBJECT*>, compound_objectNS::compare>  m_prior_queue_Objects; 
....
}

“B类.h”

class ClassB
{
void someFunction(void);
ClassA* m_network;
}

“B类.cpp”

void ClassB::someFunction(void)
{
vector<Compound_object*>::const_iterator vit;
vit = this->m_network->m_prior_queue_Objects.top();
  • 在这里我从 iSense 得到 -错误没有运算符“=”匹配这个操作数。怎么了?!}

更新:typedef Compound_object* OBJECT*

4

3 回答 3

2

priority_queue::top()返回对元素的 const 引用,并且您正在尝试分配给迭代器。你可以做两件事:

从 const 引用实例化一个(const 或 non-const)指针:

OBJECT* p = priority_queue::top(); 

从返回中实例化对指针的 const 引用。

const OBJECT*& r = priority_queue::top(); 
于 2012-08-23T08:13:04.243 回答
1

top的声明:

const value_type& top ( ) const

所以,top会返回const OBJECT*&到“top”对象。

您正在尝试将其分配给vector<Compound_object*>::const_iterator.

vit将 's type更改为const OBJECT*以编译它。


您不能遍历priority_queue.

于 2012-08-23T08:12:11.917 回答
0

m_prior_queue_Objects.top()和的类型vit不同,所以operator=不能使用。

于 2012-08-23T08:14:09.093 回答