有一个包含intrusive_ptr字段的结构:
struct BranchFeedback : boost::counted_base {
...
boost::intrusive_ptr<BPredState> theBPState;
};
还有另一个varibale定义为
std::vector< std::vector< BPredState > > theFetchState;
现在我已经实例化了一个对象
BranchFeedback theFeedback;
并希望将thisFetchState分配给该字段
theFeedback.theBPState = theFetchState[anIndex][!anOne];
然而编译器说了一些错误
error: no match for ‘operator=’ in theFeedback.theBPState = .....
我该如何解决?
答案 0 :(得分:1)
你传入的是BPredState,但是intrusive_ptr只支持operator =指向包含类型(或其他intrusive_ptrs)的指针
所以你可以写出BBet =&amp;(theFetchState [anIndex] [!anOne]);或者获取元素的指针或迭代器并使用它。