我收到錯誤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