我有一些我继承的旧代码,我维护并希望尽可能少地进行更改。它不能与较新的编译器一起编译。
代码还有更多,但基本上我认为,无论多么糟糕,我都会将void *传递给任意记录大小的记录表的开头。我不想在这个功能之外进行更改,因为它变得很难看。我想我只想投射到一个未签名的char *并进行添加然后再回到void *但是我无法找出正确的角色等。
有什么建议吗?
以下是原始代码:
foo(const void* recordArrayBasePtr ,ubin32 sizeOfStruct)
{
void * recordPtr;
int row = 9; //for example
recordPtr = const_cast<void *>( recordArrayBasePtr ) + sizeOfStruct * row;
}
答案 0 :(得分:0)
您希望转换为char*
,这是reinterpret_cast
而不是const_cast
。但考虑到这实际上是C代码,你也可以使用C风格的强制转换,这样可以减少编写麻烦:
recordPtr = (void*)((char*)recordArrayBasePtr + sizeofStruct * row);