2013-10-18 89 views
0

我收到错误C++:调整2D矢量

"The expression needs to be a constant" 

,当我尝试这样做:

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

我可以欺骗编译器(VS2010)到反正编写本?

回答

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

很好,而不是“欺骗编译器”,可以动态与运营商分配的矩阵new

+0

您可以张贴在如何做到这一点的例子代码?我一直避免“新”。 – tmighty

0

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

如果您需要分配可变大小的数组,你需要自己与new或一些适当的类/封装适合您的方法处理它。