c++ - 转换为无效*

标签 c++ pointers casting void

如何将我自己的类的任何对象转换为指向 void 的指针?

MyClass obj;
(void*)obj; // Fail

最佳答案

MyClass obj;
void *p;

p = (void*)&obj; // Explicit cast.
// or:
p = &obj; // Implicit cast, as every pointer is compatible with void *

但是要小心! obj 以这种方式在堆栈上分配,一旦您离开该函数,指针就会失效。

编辑:更新以表明在这种情况下不需要显式转换,因为每个指针都与空指针兼容。

关于c++ - 转换为无效*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6534222/

相关文章:

java - Mac笔记本电脑使用和开发讨论?

c++ - 使用自定义比较器作为映射构造函数错误中的值的priority_queue

c - 为什么 scanf 中不需要地址运算符?

c++ - 在 C++ 中确定对象类型

delphi - delphi中有这个VB代码的相关语法吗?

c++ - boost spirit 解析标识符

最近的 MSVC 中的 C++ 模板解析错误,GCC、LLVM 和较旧的 MSVC 正常

objective-c - 学习指针的代码套路的典型示例是什么?

c++ - 默认复制构造函数处理const吗?

C : Parse Hex string to unsigned long