@Bratis4ka

Как в std::map в ячейку «значение» положить функцию?

const std::map <QString, std::function<void()>> availableCommands =
            {
                {"start", ?},
                {"close", close()},
                {"restart", &Admin::ServerManager::restart},
                {"info", &Admin::ServerManager::info},
                {"help", &Admin::ServerManager::help},
            };

У меня есть следующий фрагмент кода. Мне нужно положить в ячейку "значение" функцию, которая возвращает void и ничего не принимает [ void func()]. Я пытался это сделать разными способами, но у меня не получается. Как мне это сделать? Подскажите, пожалуйста.
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
xorknown
@xorknown
Будут проблемы - решайте
В c++ у нестатических функций класса всегда неявно присутствует аргумент который является указателем на объект класса. Таким образом у вас у указателя на функцию start тип -> void (*) (Admin::ServerManager*).

Вам каким-то образом надо передавать этот указатель, либо исправить что-то в определении функций, для примера можно использовать лямбда функции которые будут содержать в себе указатель.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@FoxOne
Дарю Вам функцию
которая возвращает void и ничего не принимает

void func() { }
Можете её положить:
const std::map <QString, std::function<void()>> availableCommands =
            {
                {"start", func},
            }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы