我的功能声明如下
void func1(const void& * pThis) {
MyClass* pMyClass = static_cast<MyClass*>(pThis); //....I use PMyClass pointer.
}
我收到错误无法将const void*
转换为MyClass*
如何执行此步骤?
答案 0 :(得分:5)
你可以
MyClass* pMyClass = const_cast<MyClass*>( static_cast<const MyClass*>(pThis) );
但是这个糟糕的语法是提示:为什么函数有一个const参数,你不希望它像
void func1(void * pThis) {
当然,你可以使用C风格的强制转换:
MyClass* pMyClass = (MyClass*)pThis;
但如果可能,我会修改设计。
答案 1 :(得分:4)
const
是问题所在。它不能使用static_cast
丢弃。鉴于你将它转换为非const MyClass
,无论如何都无法接受const参数。您可以使用const_cast
删除常量,但这样做会很糟糕 - 您的方法声明它不会更改参数,但事实上它正在改变它。