2013-10-18 125 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或一些適當的類/封裝適合您的方法處理它。