以下のような関数宣言があります
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 スタイルのキャストを使用して近道をすることもできます。
MyClass* pMyClass = (MyClass*)pThis;
可能であれば、代わりにデザインを修正します。
const
が問題です。を使用してキャストすることはできませんstatic_cast
。非 constMyClass
にキャストしていることを考えると、とにかく const 引数を受け入れても意味がありません。を使用const_cast
して const-ness を削除できますが、それは悪いことです。メソッドは引数を変更しないと宣言していますが、実際には変更しています。