Есть ли способ/шаблон/библиотека, чтобы сделать что-то подобное (в псевдокоде):C++ связанных очередей метода (? Менеджер задача/планировщик)
task_queue.push_back(ObjectType object1, method1);
task_queue.push_back(OtherObjectType object2, method2);
так, что я мог сделать что-то как:
for(int i=0; i<task_queue.size(); i++) {
task_queue[i].object -> method();
}
так, что было бы назвать:
obj1.method1();
obj2.method2();
Или что невозможный сон?
И если есть способ добавить несколько параметров для вызова - это было бы лучше.
Doug T. см. Это Отличный ответ!
Версия Dave Van den Eynde также хорошо работает.
Удивительно, но что делать, если у меня есть CClass1 AND CClass2, и в идеале я хотел бы сохранить их обоих? –
Также я думаю, что должен быть _method = _ boost :: bind (AMethod, .... –
Nit: bind копирует свои аргументы по умолчанию, поэтому комментарий «делает instance.AMethod (...)» должен читать «Does * копия * instance.AMethod() " Чтобы действительно вызвать экземпляр, boost :: ref() (или cref) следует использовать для обертывания экземпляра, переданного bind(). –