@Sazoks

Оправданно ли использование static в моем случае?

У меня есть некий класс. В этом классе у меня есть функционал обработки команд пользователя. Свой "bash" скажем..
И вот у меня возник вопрос. В классе у меня есть private std::map, map этот состоит из пары .
Так же есть метод CommandListener, который принимает строку от пользователя. Дальше этот метод ищет по ключу совпадение со строкой пользователя и, если нашел, выполняет значение, тобишь метод.
Примерный код:
map
std::map<std::string, void(*)()> Functions = {
		{"SomeF1", SomeF1},
		{"SomeF2", SomeF2},
		{"SomeF3", SomeF3},
		{"SomeF4", SomeF4},
                // ...
	};

Обработчик:
void Client::CommandListener(std::string Command)
{
	std::map<std::string, void(*)()>::iterator it = Functions.find(Command);
	if (it == Functions.end()) std::cout << "This command does not exist\n";
	else it->second();
}


Но! Проблема заключается в том, что map отказывается принимать НЕСТАТИЧЕСКИЕ методы! Т.е. SomeF1 (и остальные) мне пришлось объявить static, и только так заработало.
Я это сделал чисто случайно, и теперь мое решение.. Ну мне оно кажется костыльным =(

Подскажите, как лучше поступить в моем случае?
Спасибо!
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Подскажите, как лучше поступить в моем случае?

Узнать чем статические методы класса отличаются от обычных методов.
Узнать, что кроме указателей на функции бывают указатели на функции-члены.
Понять, чем из этого лучше воспользоваться в твоём случае.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы