1
STL 대기열에서 푸시 및 팝 기능을 무시하려고합니다. 템플릿을 사용해야한다고 생각합니다. 나는 'MyQueue'형식 (이 오류 내 main.cpp 파일에 있음) 및 '<'토큰 전에 예상 된 이니셜 라이저 말하는 오류가 발생합니다.큐 STL 개체의 일부 함수를 재정의하려면 어떻게합니까?
#include "MyQueue.h"
sem_t EmptySem;
sem_t PresentSem;
sem_t mutex;
MyQueue::MyQueue()
{
sem_init(&EmptySem, PTHREAD_PROCESS_SHARED, QSIZE);
sem_init(&PresentSem, PTHREAD_PROCESS_SHARED, 0);
sem_init(&mutex, PTHREAD_PROCESS_SHARED, 1);
}
template <class Elem>
void queue<Elem>::push(const Elem &Item)
{
sem_wait(EmptySem);
sem_wait(mutex);
super.push(Item);
sem_post(mutex);
sem_post(PresentSem);
}
template <class Elem>
Elem queue<Elem>::pop(void)
{
Elem item;
sem_wait(PresentSem);
sem_wait(mutex);
item = super.front();
super.pop();
signal(mutex);
signal(EmptySem);
return item;
}
감사 : 여기에 코드의 조각입니다!