【发布时间】:2018-12-05 17:33:29
【问题描述】:
我想知道是否有一种方法可以访问 struct 中由 void* 指向的数据成员?我试图解释的内容有望在我的示例代码中更加明显:
int main()
{
struct S
{
int val;
};
S s;
s.val = 5;
void* p;
p = malloc(sizeof(S));
*(struct S*) p = s;
std::cout<< *(struct S*)p.val << std::endl;
}
我已经将p 作为*(int*)p 运行了这个精确的代码转换,它打印得很好,但是,使用上面的精确代码会导致编译错误。还没有找到一个完全完成这个任务的例子。 struct 转换后是否可以访问其数据成员?为什么或者为什么不?如果是这样,如何?
【问题讨论】:
-
std::cout<< (*(struct S*)p).val或((struct S*)p)->val。你只需要一对额外的括号。
标签: c++11 struct casting void-pointers data-members