Re[7]: Что за билиотека BOOST
От: Димчанский Литва http://dimchansky.github.io/
Дата: 11.06.04 10:20
Оценка:
Здравствуйте, Кодт, Вы писали:

А нельзя как-нибудь, чтобы так?
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 >>
Re[8]: Что за билиотека BOOST
От: Кодт Россия  
Дата: 11.06.04 11:08
Оценка:
Здравствуйте, Димчанский, Вы писали:

Д>А нельзя как-нибудь, чтобы так?

Д>
Д>void command(const std::string& s)
Д>{
Д>  cout << s;
Д>}
Д>

Наверно, можно... я так особо не копался. Тем более, что в проекте уже используется Локи.
Перекуём баги на фичи!
Re[8]: Что за билиотека BOOST
От: ArtDenis Россия  
Дата: 11.06.04 14:00
Оценка: -1
Здравствуйте, Димчанский, Вы писали:

Д>А нельзя как-нибудь, чтобы так?

Д>
Д>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 >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[9]: Что за билиотека BOOST
От: Кодт Россия  
Дата: 11.06.04 14:18
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Можно:

AD>
AD>std::queue<boost::function1<void, const std::string&> > the_queue

AD>// всё остальное как у тебя
AD>

И спрашивается, откуда я буду брать аргументы для этих функторов?
Перекуём баги на фичи!
Re[10]: Что за билиотека BOOST
От: ArtDenis Россия  
Дата: 11.06.04 14:44
Оценка:
Здравствуйте, Кодт, Вы писали:

К>И спрашивается, откуда я буду брать аргументы для этих функторов?


Не понял Что ты имеешь ввиду?
... << Rsdn@Home 1.1.4 beta 1 >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[11]: Что за билиотека BOOST
От: Кодт Россия  
Дата: 11.06.04 14:51
Оценка:
Здравствуйте, 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 ): // ага, щаз. несовпадение типов
  }
}
Перекуём баги на фичи!
Re[12]: Что за билиотека BOOST
От: ArtDenis Россия  
Дата: 11.06.04 14:58
Оценка:
Здравствуйте, Кодт, Вы писали:

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 >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.