0

皆さん、こんにちは!私は持っている:

「ClassA.h」

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

「ClassB.h」

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

「ClassB.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 参照を返し、イテレータに代入しようとしています。次の 2 つのことを行うことができます。

const 参照からポインターへの (const または非 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*&

これを に割り当てようとしていますvector<Compound_object*>::const_iterator

vitのタイプをに変更しconst OBJECT*てコンパイルします。


を繰り返し処理することはできませんpriority_queue

于 2012-08-23T08:12:11.917 に答える
0

m_prior_queue_Objects.top()とは種類vitが違うので、 はoperator=使えません。

于 2012-08-23T08:14:09.093 に答える