如何设置float*参数的默认值,该值应该是指向数组的指针

nir*_*kov 3 c++

我正在尝试将float*(C++)的默认值设置为函数参数.例如 -

Foo(float* x = (a default value should be {0,250}))
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

Fra*_*eux 6

由于x是指针,因此无法为其设置默认数值.您只能设置默认地址.要模拟给它一个默认值,floatfloat[2]某个地方有一个常量(或者在这种情况下是一个)并x改为默认值.

const float default_x[2] = { 0.f, 250.f };

void foo(const float * x = default_x) {
    // use x
}
Run Code Online (Sandbox Code Playgroud)

请注意,使用c样式数组容易出错,在现代c ++代码中不推荐使用.相反,更喜欢std::array在编译时或std::vector其他时候知道的大小.例如,以下代码将获得类似的结果,并且使用起来更安全:

#include <array>

const std::array<float, 2> default_x = { 0.f, 250.f };

void foo(const std::array<float, 2> & x = default_x) {
    // use x
}
Run Code Online (Sandbox Code Playgroud)