Win32プログラミングでは、幅広い構造体が使用されます。多くの場合、フィールドの一部だけが使用され、その他のフィールドはすべてゼロに設定されます。例:コンストラクタの構造体をゼロ化する
このようなコードをコピーして貼り付けるのをやめ、その代わりにパラメータのゼロ設定と設定を心配する抽象化を使用したいと考えています。例のように初期化された構造体だけが必要であると仮定しましょう。他のチューニングは必要ありません。以下は良い解決策ですか?起こりうる問題は何ですか?
class CStartupInfo : public STARTUPINFO {
public:
CStartupInfo()
{
ZeroMemory(this, sizeof(STARTUPINFO));
cb = sizeof(STARTUPINFO);
dwFlags = STARTF_FORCEOFFFEEDBACK;
}
};
私は特に呼び出しが)(ZeroMemoryが心配です - 私は完全にコードを制御するように見えるし、クラスにはvtableのとを持っていない呼び出しZeroMemory()この方法は安全であり、両者の間に大きな違いはありません後者が抽象化を提供することを除いて、コードスニペット。注意点はありますか?
私は間違っているかもしれませんが、それらのクラスはMFCの一部であるようですか?もしそうなら、これは、この単純な利便性のために使用する大きなフレームワークの一種です。 (これと私はATL/WTLの人です。) – Daemin
構造体DiLasciaは、誤解がなければWindows SDKの一部ですが、このテクニックはどのPOD構造体にも使用できます.MFC、ATL 、またはWindows。 DiLasciaの記事はいくつかのMFCウィジェットで動作することについてです。それは、それらを埋め込んでいるクラスに構造体をラップすることではありません。構造体をラップすることは、彼が使用しているテクニンクだけであり、記事を渡す際に言及しています。 –