我想使用Boost循環緩衝區來存儲由硬件API生成的數組。 API接收內存位置的地址並相應地推送陣列。所以,我有以下幾點:Boost循環緩衝區指針訪問(C++)
typedef unsigned char API_data [10];
boost::circular_buffer<API_data> data(10);
boost::circular_buffer<API_data>::iterator it = data.begin();
但我不能指針it
傳遞給API,因爲:
沒有合適的轉換功能,從「
boost::cb_details::iterator<boost::circular_buffer<API_data, std::allocator<API_data>>, boost::cb_details::nonconst_traits<boost::container::allocator_traits<std::allocator<API_data>>>>
」到LPVOID
存在。
該API期望類型爲LPVOID
的指針,但是it
指針的類型不同。
'it'不是任何類型的指針。 –
您可能可以通過'&* it'獲得緩衝區的開始,但儘管這很可能會進行編譯,但我不希望它能夠正常工作,因爲循環緩衝區不僅僅是一個緩衝區,它還有一個開始和結束索引。而且這些增強的索引也必須由硬件正確更新以達到您想要的效果。 – Eelke
謝謝你們的投入!我認爲'it'是一個指針,因爲boost循環緩衝區文檔中的示例將引用'it'來獲取存儲在該位置的值。我沒有足夠的經驗去找到增強循環緩衝區文檔以外的任何東西,而不是混淆。 – HypeInst