Как использовать boost bind с функцией-членом

Следующий код вызывает сбой cl.exe (MS VS2005).
Я пытаюсь использовать boost bind для создания функции для вызовов методом myclass:

#include "stdafx.h" #include  #include  #include  class myclass { public: void fun1() { printf("fun1()\n"); } void fun2(int i) { printf("fun2(%d)\n", i); } void testit() { boost::function f1( boost::bind( &myclass::fun1, this ) ); boost::function f2( boost::bind( &myclass::fun2, this ) ); //fails f1(); f2(111); } }; int main(int argc, char* argv[]) { myclass mc; mc.testit(); return 0; } 

Что я делаю не так?

Вместо этого используйте следующее:

 boost::function f2( boost::bind( &myclass::fun2, this, _1 ) ); 

Это пересылает первый параметр, переданный объекту функции, в функцию с помощью держателей мест – вы должны сообщить Boost.Bind, как обрабатывать параметры. С вашим выражением он попытается интерпретировать его как функцию-член, не принимающую аргументов.
См. Здесь или здесь общие шаблоны использования.

Обратите внимание, что cl.exe VC8s регулярно сбой при использовании Boost.Bind. Если у вас есть сомнения, используйте тестовый файл с gcc, и вы, вероятно, получите хорошие подсказки, такие как параметры шаблона. Bind -internals были созданы при чтении результатов.

  • Неопределенная ссылка на vtable
  • Ввод ввода с джойстика с помощью C # .NET
  • Заполнение TreeView с помощью структуры каталогов файловой системы
  • Почему printf не печатает только один байт при печати hex?
  • C # Справка по чтению иностранных символов с помощью StreamReader
  • Управляйте другим приложением с помощью C #
  • Как подавить предупреждения о неиспользованном параметре в C?
  • Могу ли я использовать вложенные циклы с векторами в cpp?
  • Аргументы process.start ()
  • .NET Проблемы с памятью загружаются ~ 40 изображений, память не регенерирована, потенциально из-за fragmentации LOH
  • В чем смысл запланированного модификатора доступа к закрытой защите?
  • Interesting Posts

    Меню «Пуск» Windows 10, центр уведомлений, не загружают приложения приложений

    Есть ли смысл в установке антивируса на Ubuntu?

    Настройка Android с TextView для текста на иврите?

    Как выполнить java .class из командной строки

    Как вы найдете все узлы между двумя H3, используя XPATH?

    Как я могу объединить две коммиты в одну, если я уже начал rebase?

    Как сравнить две функции для равенства указателей в последней неделе?

    Как безопасно удалить USB-накопитель, когда «Windows не может остановить ваше устройство« Общий объем », потому что программа все еще использует его».?

    Partclone.btrfs тысячи исправляемых ошибок csum

    Есть ли альтернатива для гибких / бизонов, которые можно использовать в 8-битных встроенных системах?

    Названия листов вкладки Excel против имен таблиц Visual Basic

    Chrome отменяет CORS XHR при перенаправлении HTTP 302

    Почему функции / объекты внутри анонимного пространства имен имеют внешнюю связь?

    Microsoft Excel управляет диакритикой в ​​CSV-файлах?

    Ошибка обновления Windows 80244019 после длительного поиска обновлений

    Давайте будем гением компьютера.