2011-04-25 7 views
1
void func::open() 
{ 
RequestSession* psg = new RequestSession; 
((RequestSession*)psg)->st.ProVer = PRO_VERSION; //PRO_VERSION is macro 
((RequestSession*)psg)->st.DevID = DEVICE_ID; //DEVICE_ID is macro 
} 

psg가 RequestSession 클래스의 포인터이기 때문에 다시 한 번 유형 변환의 필요성을 이해할 수 없었습니다.C에서의 Typecasting

+1

정확한 케이스는 확실하지 않지만 다른 유형으로 캐스팅되었을 수도 있지만이 주조는 더 명확히하기 위해 보관됩니다. –

+2

매우 명확하게 보이지 않는 것 같습니까? :-) –

+2

또한 메모리 누수가 있습니다 ... – murrekatt

답변

1

C++ 코드에서 C 스타일의 캐스트를 볼 때마다 간단합니다. 형 변환이 필요할 때가 매우 드문 경우는 static_cast 또는 좀더 희귀하게 reinterpret_cast을 사용해야합니다. 내 코드에 나타나는 유일한 캐스트는 dynamic_cast입니다.이 유형은 실제로 뭔가를 찾으려는 경우에 필요하지만이 역시 매우 드뭅니다.

3

여기에 유형 캐스팅 할 필요가 없습니다. 그것은 중복되고 제거 가능합니다.