我收到错误
"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];
}
well, instead of "tricking the compiler", you can dynamically allocate your matrix with the operator new
不,声明数组的大小需要在编译时知道。的值m_Floats.size()
取决于该对象中有多少成员。
如果您需要分配具有可变大小的数组,您需要自己处理它new
或使用一些适当的类/方法为您封装它。