我正在编写一个类,作为c ++类和传统c代码的中间人。 我一直在使用boost multi_array来简化很多代码。这个multararray声明如下:
using Array = boost::multi_array<float,2>
但是,我遇到了一个问题,我需要将我的multi_array传递给具有类似于
的签名的遗留函数void function(float param[ROWS][COLS]);
我的multi_array大小为ROWS和COLS,但我不知道将mutli_array转换为数组的任何简单方法。有没有办法这样做?
答案 0 :(得分:1)
由于boost::multi_array
的存储顺序为well defined,您实际上可以安全地调用它:
function((float (*)[COLS])array.data());
c_storage_order
是默认值,请确保在构造对象时不使用任何其他内容。