[英]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.