C ++如何修复旧代码中的void *算法

时间:2013-09-24 19:58:28

标签: c++

我有一些我继承的旧代码,我维护并希望尽可能少地进行更改。它不能与较新的编译器一起编译。

代码还有更多,但基本上我认为,无论多么糟糕,我都会将void *传递给任意记录大小的记录表的开头。我不想在这个功能之外进行更改,因为它变得很难看。我想我只想投射到一个未签名的char *并进行添加然后再回到void *但是我无法找出正确的角色等。

有什么建议吗?

以下是原始代码:

foo(const void* recordArrayBasePtr ,ubin32 sizeOfStruct)
{
   void * recordPtr;
   int row = 9; //for example
   recordPtr = const_cast<void *>( recordArrayBasePtr ) + sizeOfStruct * row;
}

1 个答案:

答案 0 :(得分:0)

您希望转换为char*,这是reinterpret_cast而不是const_cast。但考虑到这实际上是C代码,你也可以使用C风格的强制转换,这样可以减少编写麻烦:

 recordPtr = (void*)((char*)recordArrayBasePtr + sizeofStruct * row);