1
boost :: bind如何被用於函數的void指針參數?boost :: bind for void指針參數
boost::bind(foo, _1, boost::ref((void*)this))
顯然是不正確的。
boost :: bind如何被用於函數的void指針參數?boost :: bind for void指針參數
boost::bind(foo, _1, boost::ref((void*)this))
顯然是不正確的。
綁定是強類型。與void*
回調通常看到用C的API,沒有必要以其它方式使用它:
struct Object { /* .... */ };
int some_callback(Object& o) // or e.g. a thread function
{
// use o
}
你會綁定或稱其爲:
Object instance;
boost::function<int(Object&)> f = boost::bind(&some_callback, boost::ref(instance));
當然,你可以按值傳遞
int by_value(Object o) {}
f = boost::bin(&by_value, instance); // or `std::move(instance)` if appropriate
如果你通過指針堅持(爲什麼):
int by_pointer(Object* o) {}
f = boost::bin(&by_pointer, &instance);
如果你想成爲真正的真髒(或者你想成爲的簽名與C API兼容):
int by_void_ptr(void* opaque_pointer) {}
f = boost::bind(&by_void_ptr, &instance);
什麼'foo'的完整簽名?它是成員函數還是免費函數? –
它是這樣的:void foo(const&argument1,Object * obj) –