class ProcessMaterial
{
typedef bip::allocator<OrderReceievedT, bip::managed_shared_memory::segment_manager> ShmemAllocator;
typedef bmi::multi_index_container<OrderReceievedT,
bmi::indexed_by<
bmi::ordered_unique<bmi::tag<struct NewKey>,
bmi::composite_key<OrderReceievedT,
bmi::member<OrderReceievedT, int, &OrderReceievedT::partionID>,
bmi::member<OrderReceievedT, uint32_t, &OrderReceievedT::MarketSegmentID>,
bmi::member<OrderReceievedT, uint64_t, &OrderReceievedT::SecurityID>,
bmi::member<OrderReceievedT, uint64_t, &OrderReceievedT::TradeTimePeriority>,
bmi::member<OrderReceievedT, uint64_t, &OrderReceievedT::Quantity>
>>>, ShmemAllocator>
OrderBookT;
typedef bmi::nth_index<OrderBookT, 0>::type CompositeKeyOrderViewT;
bip::offset_ptr<OrderBookT> buyOrderBook[MaxNumStream];
CompositeKeyOrderViewT& orderView[MaxNumStream];
}
我在orderView
Constructor
中遇到问题。
我尝试过的事情。
将视图发送到shared_ptr<CompositeKeyOrderViewT&>
。
Simple Obeject。
简单指针。
我有多个OrderBook[10]
,OrderView[10]
。
最终我想要这样----&gt;
OrderView[2]->insert(OrderRecieved);
答案 0 :(得分:1)
C ++不允许引用数组。你的编译器会告诉你(http://coliru.stacked-crooked.com/a/1df5574a52fafa88)¹。
你可能不使用引用:
std::array<CompositeKeyOrderViewT, 10> orderView;
创建临时“索引”的常用方法是使用reference_wrapper(请参阅BMI文档中的示例:http://www.boost.org/doc/libs/1_66_0/libs/multi_index/doc/examples.html#example11
¹我为什么要输入&gt; 50%的代码是否完整?