嗨,我正在尝试开发一个循环队列,但是这种实现对于 int float 等基本类型来说效果很好,
template<typename R, size_t aSize=200>
class CircularQueue{
public:
explicit CircularQueue(const R & aElement);
~CircularQueue()
{
}
bool push(const R & aElement);
bool pop(R & aElement);
bool isEmpty() const ;
bool isFull() const ;
private:
CircularQueue(){}
CircularQueue(const CircularQueue &);
const CircularQueue & operator=(const CircularQueue &);
int incrementar(int ) const;
static const size_t capacity=aSize+1;
R array[capacity];
volatile int tail;
volatile int head;
};
但是当我尝试将其专门化为自定义类型时,编译器会告诉我必须调用 especif 构造函数:Especif 类
class PutMessage: public IMetodo, Sujeto<PutMessage>
{
public:
explicit PutMessage(Servant * aServant = 0,Mensaje * aMensaje=0, Observer<PutMessage> * aFuture=0);
virtual ~PutMessage();
bool guard() const;
int getResult() const ;
void call();
Mensaje * getMensaje() const;
Servant * getServant() const;
bool hasFuture() const;
private:
PutMessage();
Servant * mServant;
Mensaje * mMensaje;
int mResult;
bool mHasFuture;
};
}
对循环队列的调用:
CircularQueue<PutMessage,32> aCircular(*aMessageQueue);
我是否必须将课程重新实现为半专业化课程?