0

intrusive_ptrフィールドを含む構造体があります。

struct BranchFeedback : boost::counted_base {
  ...
  boost::intrusive_ptr<BPredState> theBPState;
};

次のように定義されている別のvaribaleがあります

std::vector< std::vector< BPredState > >           theFetchState;

これで、オブジェクトがインスタンス化されました

BranchFeedback theFeedback;

そして、そのフィールドにFetchStateを割り当てたい

theFeedback.theBPState = theFetchState[anIndex][!anOne];

しかし、コンパイラはいくつかのエラーを言います

error: no match for ‘operator=’ in theFeedback.theBPState = .....

どうすれば修正できますか?

4

1 に答える 1

1

BPredStateを渡していますが、intrusive_ptrは、含まれている型(または他のintrusive_ptrs)へのポインターに対してoperator=のみをサポートしています。

したがって、BPState =&(theFetchState [anIndex] [!anOne]);と書くことができます。または、要素へのポインターまたはイテレーターを取得して、代わりにそれを使用します。

于 2011-08-04T08:52:30.207 に答える