C++类型转换:将指针从 void 指针转换为类指针

C++ typecast: cast a pointer from void pointer to class pointer

本文关键字:指针 转换 void C++ 类型转换      更新时间:2023-10-16

如何将指向 void 对象的指针投射到类对象?

带有static_cast .请注意,仅当指针确实指向指定类型的对象时,才必须执行此操作;也就是说,指向void的指针的值取自指向此类对象的指针。

thing * p = whatever(); // pointer to object
void * pv = p;          // pointer to void
thing * p2 = static_cast<thing *>(pv); // pointer to the same object

如果你发现自己需要这样做,你可能想重新考虑你的设计。您放弃了类型安全,使编写无效代码变得容易:

something_else * q = static_cast<something_else *>(pv);
q->do_something();  // BOOM! undefined behaviour.