Я пытаюсь создать указатель extern на значение статического объекта изнутри этого статического объекта. Мы назовем этот объект Foo.Как получить значение статического объекта изнутри этого объекта?
До сих пор единственным способом, с помощью которого я работал, является создание класса Supervisor, который наследует Foo, который содержит две переменные статического типа. Один, называемый superObject, является фактическим инициализированным объектом. Другой, называемый superPointer, является двойным указателем того же типа. Внутри объекта Foo я объявляю указатель extern с именем TheSupervisor и присваиваю ему значение nullptr. Затем изнутри базового класса Supervisor я использую двойной указатель superPointer, чтобы изменить значение внешнего указателя TheSupervisor на адрес объекта superObject. Wallah.
Целью здесь является создание общедоступной ссылки на этот объект. Пытаюсь изо всех сил избегать одиночных игр и держать вещи в безопасности. Мне просто интересно, есть ли лучший способ?
Я бы опубликовал код, но мне действительно нужно его очистить и изменить. Я думаю, что описания достаточно. Может быть, даже проще, на самом деле.
EDIT: Как оказалось, для статических объектов я не могу рассчитывать, когда и в каком порядке они построены. Использование однофазного процесса для этого не будет работать. Вместо этого я должен продолжать полагаться на двухфазный процесс, такой как тот, который я изложил выше. Маркировка Ответ Илья Кобелевский правильный, поскольку он демонстрирует один из способов сделать это, но опять же, при использовании со статическими объектами должно появиться предупреждение.
Почему нет синглета? – Micka
Хороший вопрос. Этот класс Foo на самом деле является шаблоном. Для этого конкретного типа Foo я использую специализированную специализацию для его инициализации, а затем создаю глобальный доступ к ней, как описано выше. Я хочу только одного из них. Однако для других типов эти вещи не происходят, и я мог бы иметь более одного из них. Отвечает ли это на ваш вопрос? – Stradigos