|
|
От: | Аноним | |
| Дата: | 02.04.07 05:38 | ||
| Оценка: | |||
А>>template<class T, int count> class CircleBuf{
А>>public:
А>> static const int size = count;
А>> ...
А>>};
А>>template<class T, int count> class CircleBuf
{
T data[count];
int pos;
public:
static const int size = count;
CircleBuf() : pos(0);
T &operator[]( int idx )
{
return data[(pos + idx) % count];
}
void push_back( const T &val )
{
data[pos] = val;
pos = (pos + 1) % count;
}
};PS. И ещё такой вопрос: я пока не проверял, как работает этот контейнер, но мне надо следующее: Допустим я делаю так:main.cpp(14) : error C2258: illegal pure syntax, must be '= 0'
main.cpp(28) : see reference to class template instantiation 'CircleBuf<T,count>' being compiled
main.cpp(14) : error C2252: 'size' : pure specifier can only be specified for functions
main.cpp(28) : see reference to class template instantiation 'CircleBuf<T,count>' being compiled
CircleBuf<byte, 4> buffer;
buffer.push_back(1);
buffer.push_back(2);
buffer.push_back(3);
buffer.push_back(4);
// Теперь в буфере следующеее 1,2,3,4
buffer.push_back(5);
buffer.push_back(6);
// Теперь в буфере должно быть следующее 3,4,5,6