在 CPP 中,我使用了一个 C 库,其中的一种方法需要用 const void **
作为参数。
在我的类中,我有一个类型为 void *
的属性。
我尝试通过 function(&my_property)
调用该函数,但编译器报错说它无法将 void **
转换为 const void **
。
为了解决这个问题,我使用了一个 const 强制转换,并执行了 function(const_cast<const void *>(&my_property))
。
我尽可能地避免使用强制转换,想知道是否有一种 "干净" 的方法来避免使用 const 强制转换。
const void *
(通过分配给您的指针),而您想要一个void *
。您必须弹出一个const
,以使类型系统满意,但是您为什么首先想要一个void *
? - QuentinT const* x = (T*) y
,但不能使用T const** x = (T**) y
。这是为什么呢? - TimoT const c; T* a; T const **p = &a; *p = &c;
,现在非常量的a
指向一个常量对象而无需强制转换。 - Quentin