我有一个关于演员表的小问题。
基本上,我有以下代码:
//Array of ALbyte, size is irrelevant
ALbyte buffer[1000];
//...
alcCaptureSamples(m_audioDevice,(ALCvoid*)buffer, sample);
并基于 Scott Meyers Effective C++ 建议,我想为此使用 c++ 风格的演员表。
但我真的不知道我应该在reinterpret_cast<ALCvoid*>
和之间选择哪一个static_cast<ALCvoid*>
。他们在MSDN上说reinterpret_cast
用于将指针转换为另一种指针类型。
但是在 Effective C++ 中,我读到
reinterpret_cast
适用于产生依赖于实现(即不可移植)结果的低级强制转换,例如,将指针强制转换为 int
并且这些应该是非常罕见的。
那么,我应该选择哪个演员?我显然消除了const_cast
,dynamic_cast
但无法确定我应该使用剩下的哪一个......(这个问题并没有真正帮助我,因为我不知道我是否想将固定大小的数组转换为指针OpenAL 是否影响类型)。
或者我应该在这种情况下完全避免 C++ 风格的演员(但为什么)?