C++ позднее создание экземпляра глобальной переменной ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
C++ позднее создание экземпляра глобальной переменной

Сообщение Anonymous »

У меня есть код, в котором глобальный ресурс должен быть настроен с помощью определенного кода:

Код: Выделить всё

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 не будет доступа до того, как он будет создан.

Подробнее здесь: https://stackoverflow.com/questions/136 ... l-variable

Вернуться в «C++»