Задать вопрос
hell0w0rd
@hell0w0rd
Просто разработчик

Как в std::map поместить указатели на функции класса?

Допустим у меня есть класс
class Foo
{
public:
    static Foo *fromFoo();
    static Foo *fromBar();
};


Как создать такой ассоциативный массив, который будет содержать указатели на функции, чтобы я мог динамически создавать объекты из строки, без лапши вида if(str == "foo") {} ....
  • Вопрос задан
  • 5066 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
zloiia
@zloiia
руконог
Быть может покажусь занудой, но Boost::Function не?
Ответ написан
@mayorovp
Статические методы есть обычные функции.

typedef (Foo*) (*func)();
std::map<std::string, func> map;
map["fromFoo"] = &Foo::fromFoo;
map["fromBar"] = &Foo::fromBar;
Ответ написан
@Sayonji
int (TMyClass::*pt2Member)(float, char, char) = &TMyClass::DoIt
Отсюда, что-то не так? Со static проблема?
Ответ написан
Комментировать
@xaoc80
Ну можно же в мапе держать указатели не на функцию, а на фабрику класса. Или необходимо именно так — через функции?
Ответ написан
Ваш ответ на вопрос

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

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