用C++中的void指针算术

Tih*_*kov 4 c++ pointers void-pointers

我需要访问一个缓冲区中的对象,由void指针指向.该对象位于某个偏移量,但由于禁止对void指针进行算术运算,因此如何访问该对象?

Mat*_*ský 11

您可以将指针转换为char*(此指针上的+1偏移一个字节)或任何其他指针类型(如果更适合您的需要).

但是,这种方法非常容易出错!你最好检查一下你的设计,闻起来有些味道!void*在C++中99%的情况都是不必要的,使用它们的设计通常比"C++"更"C".请记住,模板和继承应该是执行这些操作的方法.

  • 您可能有充分的理由在跨语言边界进行互操作. (4认同)
  • 对不起,但我没有看到你的观点.在执行二进制IO时,无法使用void*指针进行转义.甚至boost的内存映射api都会返回一个void*指针.避免空虚*只有在可以的时候才是好事. (3认同)