Boost :: bind проблема привязки перегруженного оператора - PullRequest
1 голос
/ 19 ноября 2010

У меня класс с перегруженным оператором []. У меня также есть нить, чтобы начать ... Как я могу связать [] с темой?

Я пробовал это:

threadpool.schedule( bind( static_cast< MyClass (MyClass::*)(const MyClass &arg )>( &MyClass::operator[]), arg ) )

но VS2008 говорит:

ошибка C2664:

'boost::threadpool::thread_pool::schedule': cannot convert parameter 1 from 'boost::_bi::bind_t' to 'const boost::function0 &'

Как я могу решить это? Заранее спасибо.

1 Ответ

1 голос
/ 19 ноября 2010

Это выглядит неправильно.Ваша функция-член все еще принимает один аргумент.Итак, вам нужен заполнитель, или вы забыли связать this

threadpool.schedule( bind( 
  static_cast< MyClass (MyClass::*)(const MyClass &arg )>(&MyClass::operator[]), 
  this, arg ) ) 

operator[], который принимает тип своего класса, хотя выглядит немного странноВот пример того, как должен выглядеть «обычный» подстрочный оператор

threadpool.schedule( bind(
  static_cast< MyClass (MyClass::*)(std::size_t)>(&MyClass::operator[]), this, index ) 
); 
...