2017-04-03 65 views
-1

我早在C++編程中。我想以3D陣列發送到function.same:發送一個dynamice 3D數組到C++中的一個函數

const int MaxNumberOfLegs=function1(); 
double D_and_L_Of_Legs[4][2][MaxNumberOfLegs] = {  { {1, 2, 3.4, 4} , {1, 2, 3, 4} }, 
           { {1, 2, 3, 4.5} , {1, 2, 3} }, 
           { {1.8, 2, 3, 4} , {1, 2, 3, 4} }, 
           { {} , {} } 
         }; 
function2(D_and_L_Of_Legs); 

和函數2是相同的:與function1,而不是一個const變量

void ProcessImage(double D_and_L_Of_Legs[4][2][MaxNumberOfLegs]){ 
} 
在我的代碼

MaxNumberOfLegs變量計算。而在C++中,當我們想發送一個數組時,我們必須寫出數組的維數。 現在我的問題是,如何在第三維不是常量時發送3D數組?

+0

這不是一個有效的C++數組,因爲'MaxNumberOfLegs'不是一個編譯時常量。 C++不支持[可變長度數組](https://en.wikipedia.org/wiki/Variable-length_array)。 –

+1

至於如何解決你的問題,請考慮使用'std :: vector'來代替。 –

+0

@Someprogrammerdude,你能告訴我如何在這個程序中使用std :: vector?我早在C++。 – narges

回答

0

此功能就可以了:

void ProcessImage(double D_and_L_Of_Legs[][][], int MaxNumberOfLegs){ 
} 

而當你想打電話,這樣做:

const int MaxNumberOfLegs=function1(); 
    double D_and_L_Of_Legs[4][2][MaxNumberOfLegs] = { 
            { {1, 2, 3.4, 4} ,{1, 2, 3, 4} }, 
            { {1, 2, 3, 4.5} , {1, 2, 3} }, 
            { {1.8, 2, 3, 4} , {1, 2, 3, 4} }, 
            { {} , {} } 
          }; 
    function2(D_and_L_Of_Legs,MaxNumberOfLegs); 

替代方法:

試圖聲明MaxNumberOfLegs出側的功能作爲一個全局變量,並保持所有的代碼相同。即int MaxNumberOfLegs=function1();把它放在代碼的頂部。並在函數make MaxNumberOfLegs=function1();內部。

相關問題