2

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

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

struct foo{
int a;
}

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

foo test;

现在我想分配一个 void 指针指向这个

 void *ptest;
 ptest = &test;

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

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

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

4

2 回答 2

2

您只需更换 . 与->

直接处理对象或对象的引用时使用点运算符,通过指针处理对象时使用 -> 运算符。

于 2012-09-20T01:28:25.813 回答
2

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

选项 A:

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

选项 B:

static_cast<foo*>(ptest)->a=0
于 2012-09-20T01:28:43.330 回答