如果未传递参数,则使用默认值
If parameter isn't passed then use default
它只是给我"重新声明延迟"。我如何改变这一点,如果延迟没有传递给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++中提供模板化函数作为另一个函数的参数,默认值?
- 在 c++ 中,如果我创建一个接受一个具有默认值的参数的构造函数 - 它会用作默认(空)构造函数吗?
- 为什么无法在可变参数模板中将尾随模板参数指定为默认值?
- 可变参数模板和具有继承的默认值
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 在子类函数覆盖中省略具有默认值的参数
- 函数作为具有默认值的参数
- 具有另一个具有默认值的模板参数的模板推导
- const变量是否可以在具有默认值的参数中赋值(作为可选参数)
- 对 const 引用参数使用默认值会导致崩溃
- 为什么我需要将默认引用参数定义为 const 以便为其分配一个左值?
- 指针参数的默认值
- C++中出现意外的编译错误:将默认值传递给函数参数
- 我可以在哪里放置参数的默认值
- 如何在C++中设置std::list参数的默认值?
- 具有默认值的参数的自动类型扣除
- Clang vs GCC - 可变参数模板参数包后跟默认值参数在 GCC 4.8 中有效,但在 Clang 3.5 中无
- c++变长函数中默认值参数的位置
- 将函数指针上的参数与默认值参数一起丢弃是否有效