かなりのコードでグローバル リソースを設定する必要があるコードがあります。
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もちろん、インスタンス化される前にアクセスされないことが保証されています。