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()的计算,但坦率地说,你当前的代码清楚地表达了它的意图,这应该是你的主要目标。