Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查一系列函数的相同if条件_C++ - Fatal编程技术网

C++ 检查一系列函数的相同if条件

C++ 检查一系列函数的相同if条件,c++,C++,例如,假设我有以下代码: bool foo1() { check something... } void foo2() { do something ... } void foo3() { do something ... } void foo4() { do something ... } void foo5() { do something ... } void foo6() { if (foo1()) foo2(); if (foo

例如,假设我有以下代码:

bool foo1() {
    check something...
}

void foo2() {
    do something ...
}
void foo3() {
    do something ...
}
void foo4() {
    do something ...
}
void foo5() {
    do something ...
}
void foo6() {
    if (foo1()) foo2();
    if (foo1()) foo3();
    if (foo1()) foo4();
    if (foo1()) foo5();
}
有更好的方法吗?我不想每次都编写if语句,但其他每个函数都可能更改foo1()的计算


我有一系列不同的函数,我希望它在每次调用之前都使用foo1()。

您可以将函数放入容器中,然后使用循环:

std::vector<void (*)()> functions = {foo2, foo3, foo4, foo5};
for (auto f: functions)
    if (foo1())
        f();
std::vector functions={foo2,foo3,foo4,foo5};
用于(自动f:功能)
if(foo1())
f();

您可以将函数放入容器中,然后使用循环:

std::vector<void (*)()> functions = {foo2, foo3, foo4, foo5};
for (auto f: functions)
    if (foo1())
        f();
std::vector functions={foo2,foo3,foo4,foo5};
用于(自动f:功能)
if(foo1())
f();

也许其他函数可以返回一个
bool
,表明它们“更改了foo1()的计算”。然后,您的foo6()可以调用
foo1()
,将其结果保存在
bool
中,并且仅当任何其他函数返回一个标志,表明它们更改了
foo1()的返回值时,才能再次调用它
。你能给出一个代码的工作示例吗?
foo2
foo5
是否有相同的声明?你可以做一些技巧来隐藏foo1()的计算,但坦率地说,你当前的代码清楚地表达了它的意图,这应该是您的主要目标。也许其他函数可以返回一个
bool
,表明它们“更改了foo1()的计算”。然后,您的foo6()可以调用
foo1()
,将其结果保存在
bool
中,并且仅当任何其他函数返回一个标志,表明它们更改了
foo1()的返回值时,才能再次调用它
。你能给出一个代码的工作示例吗?
foo2
foo5
是否有相同的声明?你可以做一些技巧来隐藏foo1()的计算,但坦率地说,你当前的代码清楚地表达了它的意图,这应该是你的主要目标。