如何为函数中的矢量参数提供默认值

How can you give a default value for a vector parameter in a function

本文关键字:参数 默认值 函数      更新时间:2023-10-16

采用以下示例代码:

typedef std::vector<uint8_t> uint8Vect_t;
void setSomeThing(int value, uint8Vect parameters)
{
    //... do some stuff ...
    if (parameters.size() > 0)
    {
        //... do some stuff with parameters ...
    }
}
int main(void)
{
    uint8Vect intParams;
    intParams.push_back(1);
    intParams.push_back(2);
    // Case 1 - pass parameters
    setSomeThing(1, intParams);
    // Case 2 - pass no parameters, default value should be used
    setSomeThing(1);
    return 0;
}

我的问题是我想为函数的向量参数设置一个默认值,如下所示:

setSomeThing(int value, uint8Vect parameters = 0)

其中,如果没有传入参数"参数",则默认使用空向量。但是,如果可能的话,我无法弄清楚语法应该是什么。我知道我可以使用重载函数,但无论如何我都想知道该怎么做。

调用默认构造函数将构造一个空向量。

#include <vector>
typedef std::vector<uint8_t> uint8Vect_t;
void setSomeThing(int value, uint8Vect_t parameters = uint8Vect_t{})
{
    if (parameters.size() > 0)
    {
    }
}

像这样:

void setSomeThing(int value, uint8Vect_t parameters = uint8Vect_t()) { .... }

如果使用C++11,即使uint8Vect_t parameters = {}也可以 - 克里斯的评论