こんにちは、私は循環キューを開発しようとしていますが、この実装は 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);
クラスを準専門化クラスに再実装する必要がありますか??