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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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