我收到错误C++:调整2D矢量
"The expression needs to be a constant"
,当我尝试这样做:
float mat1[m_Floats.size()][iNumClass];
我可以欺骗编译器(VS2010)到反正编写本?
我收到错误C++:调整2D矢量
"The expression needs to be a constant"
,当我尝试这样做:
float mat1[m_Floats.size()][iNumClass];
我可以欺骗编译器(VS2010)到反正编写本?
号只有C99指定动态数组分配(即,其中大小仅在编译时已知)。也许有一个MSVC扩展标准,但你应该去正规途径创建的指针数组,并使用new
每个浮点子阵列,像:
float **mat1 = new float*[m_Floats.size()];
for (int i = 0; i < m_Floats.size(); ++i) {
mat1[i] = new float[iNumClass];
}
很好,而不是“欺骗编译器”,可以动态与运营商分配的矩阵new
第一个声明数组的大小需要在编译时知道。 m_Floats.size()
的值取决于该对象中有多少个成员。
如果您需要分配可变大小的数组,你需要自己与new
或一些适当的类/封装适合您的方法处理它。
您可以张贴在如何做到这一点的例子代码?我一直避免“新”。 – tmighty