有没有办法在C++中实现两个函数实现之间的交换?
像这样的东西:
void printA(); // print a char
void printB(); // print b char
printA(); // output: a
printB(); // output: b
functionSwap(printA, printB);
printA(); // output: b
printB(); // output: a
Run Code Online (Sandbox Code Playgroud)
我想在ExitProcess功能上使用它.
lub*_*bgr 16
您可以将指向两个函数的指针绑定到两个变量中并交换它们.
void (*f1)() = printA;
void (*f2)() = printB;
f1(); // output: a
f2(); // output: b
std::swap(f1, f2);
f1(); // output: b
f2(); // output: a
Run Code Online (Sandbox Code Playgroud)
您需要将它们包装在对象(或指向函数的指针)中:
std::function<void()> myprintA = printA;
std::function<void()> myprintB = printB;
std::swap(myprintA, myprintB);
myprintA();
myprintB();
Run Code Online (Sandbox Code Playgroud)
否则,您正在使用符号本身,并且您无法交换它.