Re[5]: Какой выбрать контейнер?
От: Аноним  
Дата: 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;
    }
};

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

PS. И ещё такой вопрос: я пока не проверял, как работает этот контейнер, но мне надо следующее: Допустим я делаю так:
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

Так работает этот класс?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.