Здравствуйте, Кодт, Вы писали:
А нельзя как-нибудь, чтобы так?
std::queue<boost::function0<void> > the_queue;
void command(const std::string& s)
{
cout << s;
}
void schedule()
{
the_queue.push(boost::bind(command, std::string("hello")));
}
... << Rsdn@Home 1.1.4 beta 1 >>
Здравствуйте, Димчанский, Вы писали:
Д>А нельзя как-нибудь, чтобы так?
Д>Д>void command(const std::string& s)
Д>{
Д> cout << s;
Д>}
Д>
Наверно, можно... я так особо не копался. Тем более, что в проекте
уже используется Локи.
Здравствуйте, Димчанский, Вы писали:
Д>А нельзя как-нибудь, чтобы так?
Д>Д>std::queue<boost::function0<void> > the_queue;
Д>void command(const std::string& s)
Д>...
Д>
Можно:
std::queue<boost::function1<void, const std::string&> > the_queue
// всё остальное как у тебя
... << Rsdn@Home 1.1.4 beta 1 >>
Здравствуйте, ArtDenis, Вы писали:
AD>Можно:
AD>AD>std::queue<boost::function1<void, const std::string&> > the_queue
AD>// всё остальное как у тебя
AD>
И спрашивается, откуда я буду брать аргументы для этих функторов?
Здравствуйте, Кодт, Вы писали:
К>И спрашивается, откуда я буду брать аргументы для этих функторов?
Не понял
Что ты имеешь ввиду?
... << Rsdn@Home 1.1.4 beta 1 >>
Здравствуйте, ArtDenis, Вы писали:
К>>И спрашивается, откуда я буду брать аргументы для этих функторов?
AD>Не понял Что ты имеешь ввиду?
queue<function<void,const string&> > the_queue;
void worker_thread()
{
...
the_queue.front()( ????? ); // откуда я возьму аргумент?
the_queue.pop();
...
}
void command1(const string& s) { ... }
void command2(const string& s) { ... }
void command3() { ... }
void schedule_command()
{
switch(rand() % 3 + 1)
{
case 1: the_queue.push( command1 ); // как передать аргумент?
case 2: the_queue.push( command2 ); // это к вопросу о том, почему бы не сделать просто очередь аргументов
case 3: the_queue.push( command3 ): // ага, щаз. несовпадение типов
}
}
Здравствуйте, Кодт, Вы писали:
AD>>Не понял Что ты имеешь ввиду?
К>К>queue<function<void,const string&> > the_queue;
К>void worker_thread()
К>{
К> ...
К> the_queue.front()( ????? ); // откуда я возьму аргумент?
К> the_queue.pop();
К> ...
К>
Да, прогладел, извиняюсь.
Сессия, однако...
Но с другой стороны можно оставить и
void command(const std::string& s)
т.к. boost::bind будет хранить аргумент функтора.
... << Rsdn@Home 1.1.4 beta 1 >>