15 Nisan 2017 Cumartesi

bind

Giriş
Şu satırı dahil ederiz.
#include <boost/bind.hpp>
#include <boost/function.hpp>
En fazla 9 placeholder kullanılabilir. Açıklaması şöyle
This implementation supports function objects with up to nine arguments. This is an implementation detail, not an inherent limitation of the design.
placeholder
Tek parametre için şöyle yaparız.
void func (int a) {...};
boost::function<void(int)> f = bind (&obj::func,this,_1);
İki parametre için şöyle yaparız.
void func (int a,int b) {...};
boost::function<void(int,int)> f = bind (&obj::func,this,_1,_2);
Nesnenin Referans Olarak Kullanılması
Şöyle yaparız. boost:::ref'te kullanılabilir.
Foo foo = ;

boost::function<int(void)> f = boost::bind(&Foo::getAge, &foo);
Nesnenin Kopyalanması
Şöyle yaparız.
Foo foo = ;

boost::function<int(void)> f = boost::bind(&Foo::getAge, foo);
boost::bind() çağrısı boost::function() nesnesine bağlanır
std::bind(), boost::bind() ve lambda metodların hepsi boost::function nesnesine atanabilir. Şöyle yaparız.
Sample demo;
io.setCallback(std::bind(&Sample::foo, demo, std::placeholders::_1));

io.setCallback(boost::bind(&Sample::bar, demo, _1));

io.setCallback([&demo](int32_t i) { demo.qux(i); });

Hiç yorum yok:

Yorum Gönder