Возможно ли в C ++ определение макроса, который берет функцию и передает ее другой функции? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть такая функция:

string inputFormatted(void *errFunc()) {
    string input;
    cin >> input;
    if (input == "") (*errFunc)();
    return input;
}

, которая читает строку и показывает ошибку, если строка неверна

Мой errFunc реализован так:

void errBadKey() {
    cout << "Enter a correct key, try HELP command for more information" << endl;
}

Я реализовал макрос следующим образом:

#define GET_PARAM(input, errorFunc) do { \
                                        input = inputFormatted(errorFunc); \
                                    } while(0);

, и я использую его так:

int main() {
    string test;
    GET_PARAM(test, errBadKey);
}

, и мне интересно, почему он говорит undefined reference to inputFormatted[abi:cxx11](void (*)())

Разве невозможно передать функцию в макрос, а затем передать эту функцию в другую функцию в макросе?

1 Ответ

0 голосов
/ 07 февраля 2019

Ваша inputFormatted подпись функции должна быть:

string inputFormatted(void errFunc()) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...