2014-11-26 7 views
5

Ben daha sonra tutucuların bazı/tüm değiştirmek için "rebind" için C++ std :: bağlama Rebind fonksiyonu

std::bind(memberFunctionPointer, objectPointer, _1, _2); 

o zaman mümkün mü

bağlama sırasında yer tutucular kullanılarak böyle bir işlevi, bağlarsanız ama fonksiyonu çağırmadan? Bazı parametrelerden geçmek ve sonra saklamak için daha sonra saklamak istiyorum. (Gecikmiş geri arama)

cevap

8

Yine bind olabilir: (doğru) bu örnekte f ve g nesneleri

auto f = std::bind(memberFunctionPointer, objectPointer, _1, _2); 

auto g = std::bind(f, val1, val2); 

g(); // (objectPointer->*memberFunctionPointer)(val1, val2) 
+0

Not tamamen farklı tipleri vardır. Kodumdaki farklı yerlerde kullanılabilir/oluşturulduğu için farklı nesneleri bağlamak istedim ve bu da std :: function nesnesinin de değişmesi gereken imza anlamına gelir. – tweej