Указатель на функцию члена класса. Как решить?
Вам нужен std::bind для каррирования вашего метода. Нестатический метод обязательно принимает неявно первым параметром указатель на объект, у которого он вызывается. Тот самый this. Т.е. метод без параметров на самом деле является функцией с 1 параметром. Вот этот параметр и нужно зафиксировать, превратив метод в настоящую функцию без параметров.#include <functional>
#include <iostream>
#include <string>
#include <map>

class Foo {
public:
	Foo(std::string msg): m_msg(msg) {}
	void event() {
		std::cout << m_msg << std::endl;
	}
private:
	std::string m_msg;
};

int main() {
	auto foo = new Foo("Foo");
	auto bar = new Foo("Bar");

	std::map<std::string, std::function<void ()>> keyEvents = {
		{"foo", std::bind(&Foo::event, foo)},
		{"bar", std::bind(&Foo::event, bar)}
	};

	for(auto callback: keyEvents) {
		std::cout << callback.first << ":";
		callback.second();
	}

	keyEvents.clear();
	delete foo;
	delete bar;
	return 0;
}
Можно через функтор (std::function). я не помню уже точно, но видел такую реализацию. копайте в эту сторону.