将const void *指针转换为特定的类指针

时间:2012-07-05 06:39:30

标签: c++

我的功能声明如下

void func1(const void& * pThis) {
    MyClass* pMyClass = static_cast<MyClass*>(pThis);    //....I use PMyClass pointer.
}

我收到错误无法将const void*转换为MyClass*

如何执行此步骤?

2 个答案:

答案 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删除常量,但这样做会很糟糕 - 您的方法声明它不会更改参数,但事实上它正在改变它。