Преобразование 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 по умолчанию, убедитесь, что больше ничего не используете при создании объекта.

Другие вопросы по тегам