我有如下函数声明
void func1(const void& * pThis) {
MyClass* pMyClass = static_cast<MyClass*>(pThis); //....I use PMyClass pointer.
}
我收到错误无法转换const void*
为MyClass*
这一步怎么做?
我有如下函数声明
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-style cast 走捷径:
MyClass* pMyClass = (MyClass*)pThis;
但如果可能的话,我会改正设计。
这const
就是问题所在。它不能用static_cast
. 鉴于您将其转换为 non-const MyClass
,无论如何接受 const 参数是没有用的。您可以使用const_cast
来删除 const-ness,但这会很糟糕 - 您的方法声明它不会更改参数,但实际上会更改它。