如何将我自己的类的任何对象转换为指向void的指针?
MyClass obj;
(void*)obj; // Fail
答案 0 :(得分:11)
MyClass obj;
void *p;
p = (void*)&obj; // Explicit cast.
// or:
p = &obj; // Implicit cast, as every pointer is compatible with void *
但要注意! obj
以这种方式分配在堆栈上,只要你离开函数,指针就会变为无效。
编辑:已更新以显示在这种情况下,因为每个指针都与void指针兼容,所以不需要显式强制转换。
答案 1 :(得分:5)
如果您使用该地址,则可以将其转换为void
指针。
MyClass obj;
void *ptr = (void*)&obj; // Success!
答案 2 :(得分:5)
您无法将非指针转换为void*
。您需要将指向对象的指针转换为void*
(void*)(&obj); //no need to cast explicitly.
转换是隐含的
void* p = &obj; //OK
答案 3 :(得分:1)
要做一些有意义的事情,首先你必须获取一个对象的地址,获得一个指针值;然后施放指针。
MyClass obj;
MyClass * pObj = &obj;
void * pVoidObj = (void*)pObj;
答案 4 :(得分:1)
我相信你只能将指向对象的指针转换成指向void ???的指针
也许:(void*)(&obj)