用c ++进行类型转换

时间:2011-04-25 07:26:57

标签: c++ casting

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类的指针,我无法理解再次进行类型转换的需要。

2 个答案:

答案 0 :(得分:3)

这里不需要进行类型转换。它是多余的,可移动的。

答案 1 :(得分:1)

简单地说,无论何时在C ++代码中看到C风格的强制转换,都是错误的。对于非常罕见的需要演员表的场合,你应该使用static_cast,或者甚至更少reinterpret_cast。在我自己的代码中出现的唯一一个强制转换是dynamic_cast,当你真的需要找到某种东西时需要它,但这也很少见。