2017-04-03 8 views
-1

私はC++プログラミングの初期段階です。私はfunction.sameに3D配列を送信したい:ダイナミクス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は同じである:私のコードで

void ProcessImage(double D_and_L_Of_Legs[4][2][MaxNumberOfLegs]){ 
} 

function1ないのconst変数をMaxNumberOfLegs変数計算。 C++では配列を送信したいときは配列の次元を記述する必要があります。 今、私の質問は、3次元配列を送信するにはどうすれば3次元はconstではない??

この関数がどうなる
+0

これは、 'MaxNumberOfLegs'がコンパイル時定数ではないため、有効なC++配列ではありません。 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();これをコードの先頭に置きます。関数内ではMaxNumberOfLegs=function1();となります。