gpt4 book ai didi

c++ - 如果未传递参数,则使用默认值

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

它只是给了我“延迟的重新声明”。我怎样才能改变这个,如果延迟没有传递给 doSay(text) 的调用,延迟应该是 1000,但是如果它被称为 doSay(text, 9000),应该是延迟9000吧?

这是我尝试过的方法,但没有用。

uint32_t delay = MINTICKS;
if (parameters > 1) {
delay = std::max(delay, popNumber(L));
} else {
uint32_t delay = 1000;
}

代码

int PersonInterface::luaActionSay(lua_State* L)
{
//doSay(text, <optional> delay)
int32_t parameters = lua_gettop(L);

uint32_t delay = MINTICKS;
if (parameters > 1) {
delay = std::max(delay, popNumber(L));
}

std::string msg(popString(L));

ScriptEnviroment* env = getScriptEnv();

Person* person = env->getPerson();
if(person){
person->doSay(msg, delay);
}

return 0;
}

最佳答案

要将默认参数传递给函数,请在函数声明中使用以下语法:

void foo(int a, int b = 1000);

foo(42); // calls foo(42, 1000);
foo(42, 9000);

你可以有任意数量的默认参数,但不能在默认参数的右边有非默认参数,所以这是不合法的:

void foo(int a, int b = 1000, int c);

但是这是

void foo(int a, int b = 1000, int c = 42);

至于你的重新声明错误,只是不要再次声明delay:

} else {
delay = 1000;
}

delay = (parameters > 1) ?
std::max(delay, popNumber(L)) :
1000;

关于c++ - 如果未传递参数,则使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17101935/

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