0

我记得在 MASM32 编译器上的指令 ASSUME 让我将指针假定为结构。有什么方法可以在 C++ 中做到这一点吗?例如我想这样做:

char* test = new char [sizeof MyStruct + MAX_REALIGN];
MyStruct* data = test;
data.member = 1;

我需要这个的原因是因为我有一个指向结构的指针,我需要用新数据重新编译它,增加原始结构的大小并重新对齐它们的一些成员。重新编译完成后,我将不再引用新结构,我只需要在重新编译之前引用。

这听起来有点难以理解,但问题很简单:有没有办法将指针作为结构引用?(我知道它不安全、不便携等)。

4

2 回答 2

1

Reinterpret_cast 将任何指针类型转换为任何其他指针类型,甚至是不相关的类。

于 2012-08-01T23:21:31.053 回答
0

MyStruct* data = reinterpret_cast<MyStruct*>(test);

或者,您可以使用 c 样式强制转换,在这种情况下,它在功能上是等效的。

MyStruct* data = (MyStruct*)test;

通常是不推荐的,因为 c 风格的强制转换将值强制转换为您所说的任何内容。但是,这基本上就是您对 reinterpret-cast 所做的事情,因此更简洁的语法可能是值得的(尽管我会质疑您为什么一开始就这样做)。

于 2012-08-01T23:38:37.003 回答