-2
私はクラスを持っていて、それをグローバルオブジェクトとして作っていますが(私にはそれが良い理由があります)、すべての要素を初期化する必要がありますC2512デフォルトのコンストラクタはありません)。これは、私が初期化する必要があるHINSTANCEへの参照を使用しているため、何ができるのか分かりません。コードは次のとおりです。コンストラクタ内のHINSTANCEへの参照を初期化する
class Foo {
private:
//Class data
HINSTANCE hInstance;
public:
Foo(HINSTANCE & hInstance = ??, std::string name = "Default");
};
Foo foo;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
foo = Foo(hInstance, "SomeName");
}
どのようにすればいいのでしょうか?、ありがとう!
特にどんなエラーが出ていますか?投稿[MCVE]してください。 –
グローバルの安全な駐車値に初期化するデフォルトのコンストラクタや、 'main'の自動変数を指す' Foo'へのポインタの追加を妨げるものは何もありません。どちらも同じ欠点があります: 'foo'は使用時に完全に初期化された状態ではないかもしれません。おそらくRAIIを観察する方が良いでしょう。あなたはグローバルな理由は何ですか?誰かがより安全な選択肢を提供するかもしれない。 – user4581301
私はウィンドウを作成したいので、グローバルなデフォルトのコンストラクタを追加できません。また、Win32 APIからのGetMessageは常にエラーをスローし、静的関数を扱うのでポインタを作成できません。私は、オブジェクトへのポインタなしでメインの他の関数からアクセスできるので、グローバルは良い選択だと信じています。 – OnelioD