gpt4 book ai didi

c++ - 我可以使用 std::set 作为函数的默认参数吗?

转载 作者:行者123 更新时间:2023-11-30 00:39:10 28 4
gpt4 key购买 nike

我是新手,现在确定这是否可行。我想添加 std::set<std::string> 的参数到一个函数,并将其默认值设置为 NULL , 以免影响之前的使用。

基本上,

func(int a); turns into  
func(int a, std::set<std::string> & temp = NULL);

但这会给我一个错误 "error C2440: 'default argument' : cannot convert from 'int' to 'std::set<_Kty> &'"

谁能帮我解决这个问题?

谢谢

最佳答案

为了设置默认为NULL , 你必须传递 std::set<std::string>* ,而不是对值类型的引用。

此外,如果您传递的是非指针类型并且您想要分配任何默认值,它必须是const。引用,因为您不能(最好!)以其他方式为其分配一个临时值。

所以您对“默认”值的选择基本上是:

std::set<std::string>* = NULL

或:

const std::set<std::string>& = std::set<std::string>()

或选项3,更直接地使用函数重载:

void myfunction() {dothing(0);}
void myfunction(std::set<std::string>& optional_param)
{ dothing(optional_param.size()); }

或选项 4,具有相应的 bool指示参数是否被“设置”:

void myfunction(std::set<std::string>& param, bool param_has_meaning=true) {}

看起来您已经走上了第三个选项的轨道。你只需要写两个定义,一个有参数,一个没有参数。

关于c++ - 我可以使用 std::set<std::string> 作为函数的默认参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9137563/

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