这个reinterpret_cast是如何工作的? (将 C++ 移植到 Java)
我有一些 C++ 代码正在尝试移植到 Java,如下所示: struct foostruct { unsigned char aa : 3; bool ab : 1; unsigned char ba : 3; bool bb : 1; };…
C++ 中的简单存储类和严格的别名
我有以下代码用于存储一个小类。 #include template class storage { private: struct destroy { T& m_t; destroy(T& t) : m_t(t) { } ~destroy() { m…
违反严格别名规则的强制转换
我有一个函数需要一个 unsigned long* 并需要将其传递给一个需要 unsigned int* 的外部库,并且在此平台上 unsigned int/long 的大小相同。 void Upda…
C++重新解释_cast
我不知道为什么这个简单的代码不起作用: int main() { const char* c = "ret"; typedef unsigned char GOK_UINT8; typedef GOK_UINT8* pGOK_UINT8; c…
使用 C++ 从 Void* 转换为 TYPE*样式转换:static_cast 或reinterpret_cast
因此,如果您从 Void* 转换为 Type* 或从 Type* 转换为 Void* 您应该使用: void func(void *p) { Params *params = static_cast(p); } 或 void func(…
严格的指针别名:针对特定问题的任何解决方案?
我遇到了由于违反严格的指针别名规则而引起的问题。我有一个来自模板的类型 T 和一些相同大小的整数类型 Int(与 sizeof 一样)。我的代码基本上执行…
如何在不使用reinterpret_cast的情况下将无符号字符转换为std::string?
我有一个 std::string 中需要的无符号字符数组,但我当前的方式使用我想避免的reinterpret_cast。有没有更干净的方法来做到这一点? unsigned char my…
需要对 C 风格、重新解释和 const 强制转换进行澄清
我是否正确地假设 C 风格的强制转换(不鼓励这样做)只不过是 reinterpret_casts?使用后者在视觉上引人注目,并且在寻找令人讨厌的强制转换时易于搜…
使用reinterpret_cast<>时出现问题在 c++
我正在尝试将数据流转换为结构,因为数据流由固定宽度消息组成,并且每个消息也具有完整定义的固定宽度字段。我计划创建一个结构体,然后使用reinterp…
C++:将整数转换为指针的安全方法
我需要将包含地址的整型类型转换为实际的指针类型。我可以按如下方式使用reinterpret_cast: MyClass *mc1 = reinterpret_cast(the_integer); 但是,…
重新解释成员函数指针是一个“好主意”吗?
我有一个工作线程,它包含“线程操作”列表,并作为“时间”处理它们。 template class ThreadAction { public: typedef void (T::*action)(); Thread…
何时使用reinterpret_cast?
我对reinterpret_cast与static_cast的适用性有点困惑。 根据我所读到的内容,一般规则是当可以在编译时解释类型时使用静态强制转换,因此使用“静态”…
当将 void* 转换为任何内容时,我应该使用 static_cast 还是 reinterpret_cast
static_cast 和 reinterpret_cast 似乎都可以很好地将 void* 转换为另一种指针类型。 有充分的理由偏爱其中之一吗?…