2012-02-01 2 views
0
struct myStruct 
{ 
    myClass* member; 
} 

myStruct *s = (myStruct*) someVariable; 

이제 s->member의 값을 myFunction (myClass c)으로 지정하고 싶습니다. 어떻게 역 참조합니까?이 멤버를 역 참조하려면 어떻게해야합니까?

+2

무엇이'someVariable'이고 왜 캐스팅합니까? – FatalError

+1

s-> 회원은 역 참조해야합니까? 질문은 무엇입니까? – RussS

+0

'void *'이고 함수 호출의 일부를 변경할 수 없기 때문에. 나는 아래에 게시 된 블록이 작동하는 것을 믿는다. – Cheetah

답변

2

이 방법 : 당신이 구조에 대한 포인터처럼

*(s->member) <------ Gives you a `myClass` object 

동일합니다.

int main() 
{ 
    myFunction(*(s->member)); 
    return 0; 
} 
+0

어리석은, 어리 석다. 나는 어리 석다는 것을 알았다. 감사. – Cheetah

1

당신은 포인터 역 참조 operator*를 사용 할 수 있습니다 : 그것은으로

void myFunction (myClass c) 
{ 


} 

전화. 이 경우 *s->member을 입력하면됩니다. s->member 주변에 괄호를 쓸 필요가 없습니다.

이유는 무엇입니까? someVariablemyStruct*으로 전송하는 이유가 명확하지 않습니다.

구조체 정의 뒤에 ;도 누락되었습니다.

+0

's-> member' 주위에는 괄호가 필요 없습니다. 그러나 좋은 가독성을 제공하므로'()'을 생략 할 것을 주장 할 필요가 없다. –

+0

's-> 회원'주위에 괄호가 필요없는 이유를 설명하는 데주의해야합니까? –

+1

@Als : 개인적으로 괄호를 더 읽기 쉽게 생략했습니다. 여분의 괄호가 임의로 추가 될 수 있다는 것을 알기에, 나는 그것이 부족한 형태를 보여주기 위해 더 많이 사용된다는 것을 알게되었다. –

관련 문제