Wrapper
次のようなクラスを作成することは可能です
void f(void *) {}
Wrapper w;
f(w);
コンパイルしますが
Wrapper w;
if (w) {}
コンパイルされませんか?または、実行時に違いを検出しますか?
背景:win32はのHANDLE
typedefですvoid *
。Win32は使用しませんNULL
が、代わり((HANDLE)(-1))
にエラー値として使用するため、暗黙的にaをboolにキャストするコードHANDLE
は、ほぼ確実に間違ったことをテストしています。をラップするクラスがHANDLE
あります。可能であれば、ラッパークラスを使用するときにエラーが発生する可能性を排除したいと思います。