かなりのコードでグローバル リソースを設定する必要があるコードがあります。
globalClass foo; // global variable / object; give it a memory space to live
void doSomething( void )
{
foo.bar(); // use the global foo object
}
int main( int argc, const char *argv[] )
{
foo( argc ); // foo can only be instantiated in main as it's using
// information that's only available here
doSomething(); // use the global foo object
return 0;
}
ご覧のとおり、foo
はグローバル スコープですが、そのコンストラクタを呼び出すには、 内でのみ利用可能な情報が必要ですmain
。
どうすればそれを達成できますか?
私が理解できる唯一の解決策は、へfoo
のポインターを作成するglobalClass
ことですが、それでは、を使用するたびにポインターが参照解除されますfoo
。これは、タイトなループで使用するとパフォーマンスの問題を引き起こす可能性があります...
PS: 実際のプログラムmain
でdoSomething
は、別のファイルに存在します。foo
もちろん、インスタンス化される前にアクセスされないことが保証されています。