【发布时间】:2011-09-24 21:24:40
【问题描述】:
我正在尝试覆盖 STL 队列中的推送和弹出功能。我想我需要使用模板。我得到一个 'MyQueue' 没有命名类型(这个错误在我的 main.cpp 文件中)和一个错误,说在 '
#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;
}
谢谢!
【问题讨论】: