Как поменять местами реализацию функций? - PullRequest
0 голосов
/ 13 ноября 2018

Есть ли способ поменять местами реализацию двух функций в 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

Я хочу использовать его с функцией ExitProcess.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вам нужно обернуть их в объекты (или указатели на функции):

std::function<void()> myprintA = printA;
std::function<void()> myprintB = printB;

std::swap(myprintA, myprintB);

myprintA();
myprintB();

В противном случае вы работаете с самими символами и не можете поменять их местами.

0 голосов
/ 13 ноября 2018

Вы можете связать указатель на обе функции в двух переменных и поменять их местами.

void (*f1)() = printA;
void (*f2)() = printB;

f1(); // output: a
f2(); // output: b

std::swap(f1, f2);

f1(); // output: b
f2(); // output: a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...