2012-09-20 67 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

不能相信我沒有想到這一點,謝謝 –