c++ - how to cast void* to shared_ptr<mytype> -


i have problem opengl project, converting void* pointer shared_ptr<mytype>.

i using bullet set pointers on rigid body with:

root_physics->rigidbody->setuserpointer(&this->root_directory->handle); 

the handle of type shared_ptr<mytype>.

the void* pointer returned bullet's library function, getuserpointer():

raycallback.m_collisionobject->getuserpointer() 

to convert mytype, static_cast not working:

std::shared_ptr<disk_node> u_poi = static_cast< std::shared_ptr<disk_node> >( raycallback.m_collisionobject->getuserpointer() ); 

the error, @ compilation time:

/usr/include/c++/4.8/bits/shared_ptr_base.h:739:39: error: invalid conversion ‘void*’ ‘mytype*’ [-fpermissive] 

any idea how can convert void* returned getuserpointer() shared_ptr<mytype>?

since storing pointer instance of std::shared_ptr need cast value returned getuserpointer std::shared_ptr<>* instead of std::shared_ptr<>.

std::shared_ptr<disk_node>* u_poi   = static_cast< std::shared_ptr<disk_node>* >(raycallback.m_collisionobject->getuserpointer()); 

Comments

Popular posts from this blog

c++ - How to add Crypto++ library to Qt project -

jQuery Mobile app not scrolling in Firefox -

How to use vim as editor in Matlab GUI -