Как получить аргументы, связанные с boost :: function?

Из буста :: связать документы ( http://www.boost.org/doc/libs/1_53_0/libs/bind/bind.html#with_functions ), «Аргументы, которые принимает связывание, копируются и хранятся внутри возвращенного функционального объекта», но есть ли способ, которым я мог бы получить аргументы, скопированные в этот функциональный объект?

т.е .:

#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <string>

using namespace std;

void doSomthing(std::string str)
{
}

int main()
{
boost::function<void(void)> func_obj = boost::bind(&doSomthing, "some string");
//how can I get the std::string argument("some string") through func_obj?
}

заранее спасибо.

0

Решение

На самом деле с объектом Boost.Function мало что можно сделать, кроме как вызвать его — и это сделано специально. (Вы можете скопировать, уничтожить, сравнить с NULL, но не намного).

Рассмотрим следующий код:

void Foo () {}
void Bar ( int i ) { printf ( "%d", i ); }

boost::function<void(void)> fFoo (Foo);
boost::function<void(void)> fBar = boost::bind (Bar, 23);

Эти два объекта предназначены для одинакового обращения. Они одного типа и ведут себя одинаково. Там нет механизма в функции повышения, чтобы различать их.

Для отличного описания методов, используемых в Boost.Function (и других местах), загляните в Nevin Liber’s тип разговора о стирании от Boostcon 2010

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector