【发布时间】:2020-02-29 20:05:15
【问题描述】:
我认为这是不言自明的。我需要能够将const Uint8 * 转换为Uint8 *。我试过简单地将const Uint8 * 放入const Uint8 * 并使用static_cast。但是,每次它都给我这个错误:
error:
assigning to 'Uint8 *' (aka 'unsigned char *') from incompatible type
'const Uint8 *' (aka 'const unsigned char *')
keyboardstate = SDL_GetKeyboardState(NULL);
有人知道如何成功转换吗?
【问题讨论】:
-
使用
const_cast... -
你为什么要把一个不可变的东西转换成一个可变的东西?这对我来说似乎是一个错误。
-
@KamilCuk
const_cast虽然很危险。如果对象最初不是非常量,那么在修改对象时丢弃 const 是未定义的行为。 -
@JesperJuhl 这是不正确的。仅当对象实际被修改时,它才是 UB。
const_cast在使用不支持 const 的库时尤为重要。 -
我必须在实施 const_cast 解决方案后同意问题已解决。加上我的游戏的整个事件系统都被它修复了。所以我说这是一个非常好的解决方法,因为我现在知道我的游戏正在按应有的方式运行,所以我现在可以整天玩下去了。