繁体   English   中英

C ++:转换/转换void指针以引用结构

[英]C++: Convert/Cast void pointer to 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;
};

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

我要在这里伸出脖子,说这是您要尝试做的基本工作:

class Struct { int x;};

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

(而且这不能跨平台移植-请参阅所有评论)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM