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

converting const void* pointer to specific class pointer

本文关键字:指针 转换 void const      更新时间:2023-10-16

>我有如下函数声明

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

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

如何执行此步骤?

你可以

MyClass* pMyClass = const_cast<MyClass*>( static_cast<const MyClass*>(pThis) );

但是这个糟糕的语法是提示:为什么该函数有一个 const 参数,你不希望它像

void func1(void * pThis) {

当然,你可以使用 C 样式转换采取捷径:

MyClass* pMyClass = (MyClass*)pThis;

但如果可能的话,我会修复设计。

const是问题所在。它不能用static_cast扔掉。鉴于您将其转换为非常量MyClass,无论如何接受常量参数都没有用。您可以使用const_cast来删除常量,但这会很糟糕 - 您的方法声明它不会更改参数,但实际上它正在更改它。