【问题标题】:send a dynamice 3D array to a function in c++将动态 3D 数组发送到 C++ 中的函数
【发布时间】:2017-08-28 10:21:41
【问题描述】:

我在 C++ 编程方面处于早期阶段。我想将 3D 数组发送到函数。同样:

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);

和function2一样:

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

在我的代码中,MaxNumberOfLegs 变量使用 function1 而不是 const 变量计算。在 C++ 中,当我们想要发送一个数组时,我们必须编写数组的维度。 现在我的问题是,当第三维不是 const 时如何发送 3d 数组??

【问题讨论】:

  • 这不是一个有效的 C++ 数组,因为 MaxNumberOfLegs 不是编译时常量。 C++ 不支持variable-length arrays
  • 至于如何解决您的问题,请考虑改用std::vector
  • @Someprogrammerdude,你能告诉我如何在这个程序中使用 std::vector 吗?我在 C++ 早期。

标签: c++ arrays function parameter-passing


【解决方案1】:

这个函数会做:

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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多