【发布时间】:2011-03-20 10:28:45
【问题描述】:
首先解释一下我要做什么:
void Foo(int &num, bool condition);
Foo(x, x > 3);
这段代码基本上会在调用函数之前评估条件的布尔值,然后传递纯真或假。我正在寻找一种让它通过条件本身的方法,所以我可以这样做:
void Foo(int &num, bool condition)
{
while(!condition)
{
num = std::rand();
}
}
我知道可以通过传递包含条件的字符串并解析后者来解决问题,我现在正在处理它,但我发现它的效率相当低。接受的答案将是除解析包含条件的字符串之外的任何其他方式解释解决方案的答案,或者澄清这种传递条件的方式是不可能的答案。
提前致谢
【问题讨论】:
-
是否有更大的图景让我们可以在真实情况下看到
Foo(假装它按你的意愿工作)?另外,当x是引用时,您将其作为参数传递,而不是x的地址。 -
如果是
std::rand()请注意它返回int并且不接受任何参数。 -
是的,我没有检查它,我只是写它来说明事情应该如何工作。我真的很抱歉代码很可笑,但我直接在这里写了几分钟。 @GMan - 我可以复制和粘贴代码,但它可能会错过一些部分,所以我只是想给出这个想法。只要不尊重条件,它应该做的是一次又一次地要求用户输入。
-
不会有每个 Foo 调用。相反,该函数应该运行一个 while 循环来检查条件,并一遍又一遍地询问输入,就像我在上面的评论中所说的那样。
标签: c++ parameter-passing