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

时间:2018-11-15 16:18:13

标签: c++

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

<library_name>-<version-number>

有人知道该怎么做吗?

2 个答案:

答案 0 :(得分:6)

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

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

void foo(const float * x = default_x) {
    // use x
}

请注意,使用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
}

答案 1 :(得分:1)

通常最好通过函数重载来完成这种事情。

void f(float* arg) {
    // whatever
}

void f() {
    static float default_data[] = { 0, 250 };
    f(default_data);
}