我有一个关于转换的小问题。
基本上,我有以下代码:
//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
is intended for low-level casts that yield implementation-dependent (i.e. unportable) results, e.g., casting a pointer to an int
而且这些应该非常罕见。
那么,我应该选择哪个类型转换呢?我显然消除了const_cast
和 dynamic_cast
但无法确定我应该使用剩下的哪一个......(这个问题并没有真正帮助我,因为我不知道我想将固定大小的数组转换为来自 OpenAL 的指针类型的事实是否会影响或不)。
或者在这种情况下我应该完全避免 C++ 风格的转换(但为什么)?
最佳答案
在这种情况下,您可能不需要进行任何转换。
请记住,数组自然会退化为指针,并且所有指针都可以隐式转换为 void*
(我猜 ALCvoid*
是)。
关于c++ - 正确的固定大小数组的 c++ 样式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17192709/