通过void指针修改结构的内容

时间:2012-09-20 01:27:02

标签: c++ pointers struct void

请注意,我95%不熟悉指针。

所以这就是我的困境,我有一个结构让我们称之为foo

struct foo{
int a;
}

所以让我们创建一个foo的实例

foo test;

现在我想指定一个指向此

的void指针
 void *ptest;
 ptest = &test;

这一切都很好,但是当涉及到修改内容时(即在foo中的int),我不知道如何处理这个问题。我试过static_cast这样:

static_cast<foo*>(ptest).a=0; 

但这也不起作用。任何帮助,将不胜感激。感谢

2 个答案:

答案 0 :(得分:2)

你只需要更换。与 - &gt;

在直接处理对象或其引用时使用点运算符,以及 - &gt;当你通过指针处理它时,运算符。

答案 1 :(得分:2)

您将其转换为指针,因此您需要使用*运算符取消引用它或使用->运算符。

选项A:

*(static_cast<foo*>(ptest)).a=0

选项B:

static_cast<foo*>(ptest)->a=0