Как мне создать очередь в заголовочном файле, которая будет доступна для всех файлов?

#c #header #queue

#c #заголовок #очередь

Вопрос:

В настоящее время в моем заголовке у меня есть следующее

 struct queue{
std::queue<int> queue;
}; 
 

То, что я пытаюсь сделать, это создать структуру данных очереди, которая будет доступна из всех файлов. Однако я не хочу создавать новую очередь каждый раз, когда я ее вызываю, а скорее хочу иметь возможность передавать эту же очередь в другие функции. Возможно ли это при использовании библиотеки очередей C ?

Комментарии:

1. Когда вы говорите «передать» очередь, вы имеете в виду в качестве аргумента при вызове функции?

2. Вы говорите об одноэлементном классе / структуре?

3. @StoryTeller вроде. На самом деле я решаю проблему потребителя-производителя (я не упоминал об этом в своем первоначальном вопросе, потому что хотел, чтобы это было просто), и моя функция producer в my producer.cpp имеет тип void и принимает только (void * arg) в качестве аргументов, поскольку я вызываю эту функцию с pthread_create помощью . В конечном счете, в этой функции производителя я хочу иметь возможность вставлять целые числа в эту очередь.

Ответ №1:

Возможно, я смогу больше помочь с небольшим количеством кода / контекста о том, чего вы пытаетесь достичь.

У вас есть объект std::queue <int> Q , который вы хотите сделать доступным для нескольких???(файлы? классы? функции?). У вас есть несколько вариантов :

  1. Сделайте этот объект глобальным.
  2. Передать указатель на этот объект в ??? который затем будет работать с объектом, используя указанный указатель.
  3. (Рекомендуется) Передать ссылку на этот объект в ???. Таким образом, вы сможете использовать его нормально и все??? будет иметь доступ к тому же объекту.

Опять же, если это непонятно, я смогу помочь дальше, увидев больше контекста. Возможно, еще немного кода?