2017-04-03 64 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();内部。

相关问题