我收到错误
"The expression needs to be a constant"
当我尝试这样做时:
float mat1[m_Floats.size()][iNumClass];
我可以欺骗编译器(VS2010)进行编译吗?
答案 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
或一些适合您的类/方法来处理它。