gpt4 book ai didi

c++: - 设置大小参数 X 的默认 initializer_list 参数 Y,其中 X 和 Y 是函数参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:50 25 4
gpt4 key购买 nike

考虑以下代码

enum class VAR_CHANGE{TYPE1, TYPE2, TYP3};
void cell ( const std::initializer_list<double>& values,
const std::initializer_list<VAR_CHANGE>& change_type = [[[ !!!!!]]] )
{
// do something
}

我想替换 [[[ !!!!!]]] 以便默认初始化列表出现

{VAR_CHANGE::TYPE1, VAR_CHANGE::TYPE1, ....}

大小

values.size()

我想这样做是因为通常我想为初始化列表“值”中的所有值选择枚举类型 VAR_CHANGE::TYPE1。例如:

cell({1.2, 2.2, 6.7});

实际上是,

cell({1.2, 2.2, 6.7}, {VAR_CHANGE::TYPE1, VAR_CHANGE::TYPE1, VAR_CHANGE::TYPE1});

我可以重载该函数,但想知道是否有一种很好的通用方法来将其表示为一个函数,而不是传递大小来执行此操作。

最佳答案

你可以使用这个技巧:

enum class VAR_CHANGE{TYPE1, TYPE2, TYP3};



void cell ( const std::initializer_list<double>& values,
const std::initializer_list<VAR_CHANGE>& change_type = {} )
{
if(values.size() > 0 && change_type.size()==0)
{
// default
}
// do something
}

int main()
{
cell({12.4, 234.4});
cell({12.4, 234.4}, {VAR_CHANGE::TYPE1, VAR_CHANGE::TYPE2});;
}

或者让它变得更好!

关于c++: - 设置大小参数 X 的默认 initializer_list 参数 Y,其中 X 和 Y 是函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15527140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com