Afficher un message
Vieux 16/10/2007, 15h31   #4
marcomoeller@googlemail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut 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];
};

  Réponse avec citation
 
Page generated in 0,05808 seconds with 9 queries