Как правильно использовать существующий объект одного класса в описании другого класса на C++
Я учусь использовать С++ для программирования микроконтроллеров. И не могу понять, как выстроить правильно логику программы на С++
Расскажу на конкретном примере. Допустим, я создал класс для обработки данных поступающих с UART (последовательный порт) Класс представляет собой кольцевой буфер и несколько методов для работы с ним. Методы самые простые: сохранить байт в буфер, вытащить байт из буфера, проверить буфер на пустоту, очистить буфер и т.д.
На основе класса я создал объект. И проблема в том что этот объект должен быть только один, а использоваться он должен во всей программе в том числе и в других классах.
Объектом кольцевого буфера я пользуюсь и в прерывании (что бы положить туда пришедший байт) и в программе (например, для проверки его пустоты), а так же в классе для обработки сообщений и в некоторых других классах. То есть, существующий объект должен использоваться как самостоятельно, так и в составе других классов.
К примеру, я хочу создать класс обработки принимаемых данных и в этом классе мне нужно как-то организовать взаимодействие с уже существующим объектом кольцевого буфера. Наследование, дружба не вариант, так как при этом создастся еще один объект кольцевого буфера, а это не допустимо.
Получается, что если я создаю класс, где нужно как то взаимодействовать с буфером, то прямо в описании класса мне нужно использовать уже существующий объект. Но, на сколько я понимаю, описание класса не должно каким-либо образом ссылаться на уже созданный объект.
Или такое допустимо? Как быть в таких ситуациях?