C ++:调整2D矢量的大小

时间:2013-10-18 12:34:31

标签: c++ windows matrix

我收到错误

"The expression needs to be a constant" 

当我尝试这样做时:

float mat1[m_Floats.size()][iNumClass];

我可以欺骗编译器(VS2010)进行编译吗?

3 个答案:

答案 0 :(得分:2)

没有。只有C99指定动态数组分配(即只在编译时才知道大小)。也许有一个标准的MSVC扩展,但你应该使用new创建指针数组和每个浮点子数组的规范方式,如:

float **mat1 = new float*[m_Floats.size()];
for (int i = 0; i < m_Floats.size(); ++i) {
    mat1[i] = new float[iNumClass];
}

答案 1 :(得分:1)

好吧,您可以使用运算符new

动态分配矩阵,而不是“欺骗编译器”。

答案 2 :(得分:0)

没有。声明的数组的大小需要在编译时知道。 m_Floats.size()的值取决于该对象中有多少成员。

如果您需要分配具有可变大小的数组,您需要自己使用new或一些适合您的类/方法来处理它。