shared_ptr custom deallocator - member function?
can i use some class's (a kind of factory) member be used as a deallocator in a shared_ptr? like to do something like this: boost::shared_ptrmysqlpp::Connection cp(sDbPool->grab(), boost::bind(&mysqlpp::ConnectionPool::release, sDbPool)); where sDbPool is a shared_ptr to the "factory/pool manager". i tryed just that, but visual studio express 2008 keeps crashin on me. (the compiler crashes, not the program). any ideas?
Alejandro Martinez:
can i use some class's (a kind of factory) member be used as a deallocator in a shared_ptr?
like to do something like this:
boost::shared_ptrmysqlpp::Connection cp(sDbPool->grab(), boost::bind(&mysqlpp::ConnectionPool::release, sDbPool));
where sDbPool is a shared_ptr to the "factory/pool manager".
Assuming void ConnectionPool::release( Connection * pc ); try boost::bind( &ConnectionPool::release, sDbPool, _1 ); shared_ptr passes the raw pointer to its deleter, and the _1 passes it as the 'pc' parameter of 'release'. sDbPool is the implicit 'this'.
oh! silly me.
i blamed the compiler prematurely because of it crashing.
thank you very much :)
"Peter Dimov"
Alejandro Martinez:
can i use some class's (a kind of factory) member be used as a deallocator in a shared_ptr?
like to do something like this:
boost::shared_ptrmysqlpp::Connection cp(sDbPool->grab(), boost::bind(&mysqlpp::ConnectionPool::release, sDbPool));
where sDbPool is a shared_ptr to the "factory/pool manager".
Assuming
void ConnectionPool::release( Connection * pc );
try
boost::bind( &ConnectionPool::release, sDbPool, _1 );
shared_ptr passes the raw pointer to its deleter, and the _1 passes it as the 'pc' parameter of 'release'. sDbPool is the implicit 'this'.
participants (2)
-
Alejandro Martinez
-
Peter Dimov