Преобразование boost multi_array в его собственный тип массива
Я пишу класс, который выступает в качестве посредника для классов C++ и устаревшего кода C. Я использовал boost multi_array, чтобы упростить большую часть кода. Этот mult_array объявлен так:
using Array = boost::multi_array<float,2>
Однако я столкнулся с проблемой, когда мне нужно передать свой multi_array в унаследованную функцию, подпись которой похожа на
void function(float param[ROWS][COLS]);
Мой multi_array имеет размер ROWS и COLS, но я не знаю ни одного простого способа преобразования mutli_array в массив. Есть ли способ сделать это?
1 ответ
Решение
Поскольку порядок хранения boost::multi_array
хорошо определено, вы можете назвать это безопасно так:
function((float (*)[COLS])array.data());
c_storage_order
по умолчанию, убедитесь, что больше ничего не используете при создании объекта.