2012-09-20 2 views
2

포인터에 95 % 익숙하지 않습니다.void 포인터를 통한 구조체 내용 수정

그래서 여기 내 딜레마, 나는 구조의이

foo test; 

지금 나는이 가리 키도록 무효 포인터를 할당 할의 푸의 인스턴스를 만들 수 있도록 foo

struct foo{ 
int a; 
} 

를 호출 할 수 있습니다

void *ptest; 
ptest = &test; 

위 내용은 모두 훌륭하지만이 내용을 수정할 때는 s (즉 int 내에서 foo), 나는 이것에 접근하는 방법을 잘 모르겠다. 이 같은 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

당신은 단순히 교체해야합니다. with->

도트 연산자는 객체를 직접 또는 참조로 처리 할 때 사용하고, 포인터로 처리 할 때는 -> 연산자를 사용합니다.

+0

믿을 수가 없어. 고마워. –

관련 문제