为什么不能用常量表达式声明数组?

时间:2018-09-29 09:21:36

标签: c++ arrays c++11 std

我有一个二维std::array

std::array<std::array<string, n_hieght>, n_width> data_able;

n_hieghtn_width是常量变量,我不知道它们对于不同的dataTables的值,并且获取它们的值的唯一可能方法是使用函数调用。 / p>

const size_t n_hieght = dcmI_image->get_height();
const size_t n_width = dcm_image->get_width();

但这是不可能的,这就是我得到的错误:

error: the value of ‘n_hieght’ is not usable in a constant expression
 ‘n_hieght’ was not initialized with a constant expression

当然,nWidth也一样。

1 个答案:

答案 0 :(得分:3)

数组的大小必须是常量表达式,例如constexpr或文字,而不仅仅是const。如果在编译时知道大小,则可以将const更改为constexpr。如果在编译时未知大小,则不能直接使用std::array