#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
, который вы хотите сделать доступным для нескольких???(файлы? классы? функции?). У вас есть несколько вариантов :
- Сделайте этот объект глобальным.
- Передать указатель на этот объект в ??? который затем будет работать с объектом, используя указанный указатель.
- (Рекомендуется) Передать ссылку на этот объект в ???. Таким образом, вы сможете использовать его нормально и все??? будет иметь доступ к тому же объекту.
Опять же, если это непонятно, я смогу помочь дальше, увидев больше контекста. Возможно, еще немного кода?