C ++:Convert / Cast void指向struct reference的指针

时间:2017-10-26 11:11:01

标签: c++ pointers casting void

我想将一个void指针强制转换为struct reference。

结构的最小示例:

#include "Interface.h"

class Foo
{
public:
   Foo()
   : mAddress((uint32_t*)0x0803D000)
   // Okay
   , mStructPtr(*static_cast<const Struct*>(mAddress)) 
   // Error: invalid static_cast from type 'const void*' to type 'const Struct&
   , mStructRef1(static_cast<const Struct&>(mAddress))
   // Error: 'const void*' is not a pointer-to-object type
   , mStructRef2(static_cast<const Struct&>(*mAddress)) 
   {

   }

private:
   const void * const mAddress;
   Struct* mStructPtr;
   Struct& mStructRef1;
   Struct& mStructRef2;
};

使用引用是有意义/可能的(如何在构造函数中初始化?)还是必须使用指针?

1 个答案:

答案 0 :(得分:0)

我要把我的脖子伸到这里说这是你要做的事情的基础:

class Struct { int x;};

class Foo
{
    Foo() :
    s(*static_cast<Struct *>(reinterpret_cast<void*>(0x0803D000)))
    {}
    Struct & s;
};

(这不是跨平台可移植的 - 请参阅所有评论)。