Re: template with integer parameter and special implementation for N=1
Hi,
> You have to create specialization of the whole class:
> template <class T>
> class FinitQue<T, 1>
> {
> ...
I tried something like this: but I get following "error: previous
declaration 'template<class T> class FinitQueFix'....."
how do i this better?
template <class T,std::size_t N>
class FinitQueFix {
public:
inline FinitQueFix() ;
inline void push_front(const T newDat);
inline T get(std::size_t idx) const ;
inline T get_front() const;
inline std::size_t getAmount() const;
inline std::size_t getSize() const;
};
template <class T>
class FinitQueFix<T,1> {
public:
inline void push_front(const T newDat){
data = newDat;
}
inline T get(std::size_t idx) const {
return data;
}
inline T get_front() const{
return data;
}
inline std::size_t getAmount() const {
return 1;
}
inline std::size_t getSize() const {
return 1;
}
private:
T data;
};
template <class T,std::size_t N>
class FinitQueFix {
public:
inline FinitQueFix() {
amount = 0;
posTop = 0;
}
inline void push_front(const T newDat){
posTop += N-1;
posTop %= N;
amount = min(N, amount+1);
arr[posTop] = newDat;
}
inline T get_front() const{
return arr[posTop];
}
inline std::size_t getAmount() const {
return amount;
}
inline std::size_t getSize() const {
return N;
}
private:
std::size_t posTop;
std::size_t amount;
T arr[N];
};
|