Я хотел бы иметь класс с функциями-членами, которые возвращают указатели на функции-члены.Функции-члены, возвращающие указатели на функции-члены
То есть, что-то вроде:
class Foo {
// typedef ????(Foo::* func)????
public:
Func s1();
Func s2();
Func s3();
}
Func Foo::s1() {
// do stuff
return &Foo::s2;
}
Func Foo::s2() {
// do stuff
return &Foo::s3;
}
Func Foo::s3() {
// do stuff
return 0;
}
В принципе, то, что я пытаюсь сделать, это осуществить государственную машину, где каждое состояние актуалистов следующего состояния и возвращает его с помощью указателя функции.
Примечание: Меня не интересуют другие способы реализации конечного автомата. Мне очень нравится знать, можно ли это реализовать так, как показано выше.
Контекст: Я получил вдохновение от этого разговора: http://www.youtube.com/watch?v=HxaD_trXwRE и задался вопросом, можно ли использовать аналогичный шаблон в C++.
['std :: function'] (http://en.cppreference.com/w/cpp/utility/functional/function) и [' std :: bind'] (http: //en.cppreference. com/w/cpp/utility/functional/bind) являются вашими друзьями. –
Вам понадобится что-то вроде 'using Func = Func (Foo :: *)();' - это недопустимо. –
Вы можете сделать это с помощью объектов функций, но не функций/функций-членов. – jrok