2012-09-20 39 views
2

请注意,我95%不熟悉指针。通过void指针修改结构的内容

因此,这里是我的困境,我有一个结构,我们称之为foo

struct foo{ 
int a; 
} 

所以,让我们创建FOO的实例

foo test; 

现在我要指派一个空指针指向这个

void *ptest; 
ptest = &test; 

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

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

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

+0

指针使用' - >'。 – chris

+0

看到有人用'static_cast'而不知道' - >'只是洗脑了我 –

回答

2

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

选项A:

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

选项B:

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

圣洁... lordy。谢谢你一堆 –

+0

@ Shelby.S,np :) – riwalk

2

你只需要更换。使用 - >

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

+0

不能相信我没有想到这一点,谢谢 –