2

我正在编写一个类,它充当 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 转换为数组的任何简单方法。有什么办法吗?

4

1 回答 1

1

由于 的存储顺序boost::multi_array明确定义的,因此您实际上可以像这样安全地调用它:

function((float (*)[COLS])array.data());

c_storage_order是默认设置,确保在构造对象时不要使用其他任何东西。

于 2017-03-15T17:27:16.480 回答