Синглтоны и стиль кодирования Google

Стиль кодирования Google С++ не допускает нетривиальных статических объектов (и по какой-то причине) и, следовательно, никаких синглетонов. В то же время синглтоны действительно представляют реальность логики приложения.

Итак, как правильно реализовать одноэлементную функциональность в стиле Google:
(a) иметь статические указатели и инициализировать их при запуске как отдельный шаг (например, с помощью связанного списка классов инициализатора/создателя)
(b) иметь контекст, содержащий ссылки на все одноэлементные объекты, и передавать их с каждым методом (c) иметь контекст, чтобы быть членом каждого класса
г) что-то еще?

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
3
0
260
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В «Руководство по стилю Google C++» упоминаются «Типы, представляющие одноэлементные объекты (Registerer)».

Вы можете увидеть реализацию указанного регистратора в ronaflx/cpp-utility с "util/registerer.h" для указателей функций (проиллюстрировано здесь) и util/singleton.h для классического синглтона.

OP указывает на свой собственный проект alex4747-pub/proper_singleton.

Таким образом, фактический ответ (а): используйте статические указатели, чтобы избежать проблем с уничтожением.

zzz777 01.08.2019 22:16

К вашему сведению: я только что набрал пример кода, чтобы выразить (а) подход: github.com/alex4747-pub/proper_singleton

zzz777 21.06.2020 15:29

@zzz777 Спасибо. Я включил ваш репозиторий в ответ для большей наглядности.

VonC 21.06.2020 16:04

Другие вопросы по теме