0

有一个包含 intrusive_ptr 字段的结构:

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

还有另一个变量定义为

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

现在我已经实例化了一个对象

BranchFeedback theFeedback;

并希望将 theFetchState 分配给该字段

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

但是编译器说一些错误

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

我该如何解决?

4

1 回答 1

1

您正在传递 BPredState,但intrusive_ptr仅支持 operator= 用于指向包含类型(或其他 intrusive_ptr)的指针

所以你可以写 theBPState = &(theFetchState[anIndex][!anOne]); 或获取元素的指针或迭代器并使用它。

于 2011-08-04T08:52:30.207 回答