`#include <utility> // std::pair
#include <iostream> // std::cout
#include <string>
int main () {
// Cast a dynamically allocated string to 'void*'.
void *vp = static_cast<void*>(new std::string("it's easy to break stuff like this!"));
// Then, in the function that's using the UserEvent:
// Cast it back to a string pointer.
std::string *sp = static_cast<std::string*>(vp);
// You could use 'sp' directly, or this, which does a copy.
std::string s = *sp;
// Don't forget to destroy the memory that you've allocated.
delete sp;
}
互转:
std::string s1 = "hello";
void *sp = &s1;
std::string ss1 = *static_cast<std::string*>(sp);
那么vector类型如何与void*互转呢,一开始仍按上面转,后来反应过来,傻了,两者类型不一样,一个是对象类型,一个是指针类型,不能互转。
可以获得该vector对象的地址,赋值给void*指针。
vector<const char*> v; //定义一个vector对象
void * p = (void *)&v; //获得该对象的地址,赋值给p指针
传参的话直接加个 & 就好了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/157428.html