【发布时间】:2013-06-16 01:47:04
【问题描述】:
我有一个关于演员表的小问题。
基本上,我有以下代码:
//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++ 风格的转换(但为什么)?
【问题讨论】:
-
也许this SO question/answers可以帮助你。
标签: c++ reinterpret-cast static-cast