例如,我在一些代码中有一个函数调用,我希望能够按我喜欢的方式启用/禁用。
通常我可以只使用 if,但它会每次检查函数是否可以运行,这是我不想要的。我只是希望代码永远不会进行该检查。
ifdef block 可能很乱而且很脏,它们堆积起来使代码难以阅读。
我不能用某种模板来解决这个问题吗?我知道我可以制作多个 lambda 来构建我想要的可能函数调用的每个版本。
这是静态 if 的意思吗?因为在我看来,我想做的是自修改代码,我不知道这是个好主意还是可能。
假设这个决定需要在运行时做出...
虽然这个问题有很多复杂的解决方案,但函数指针是一种简单的方法(尽管我怀疑它的性能明显优于条件指针)。
#include <functional>
#include <iostream>
void option1(int) {
std::cout << "option 1\n";
}
void option2(int) {
std::cout << "option 2\n";
}
std::function<void(int)> fp(option1);
int main() {
fp(3);
// Let's change what fp does:
fp = option2;
fp(3);
}
我是一名优秀的程序员,十分优秀!