#pragma once #define min(a,b) (ab?a:b) class Buffer{ public: Buffer(size_t sz=0){ if (sz){ data =new float[sz]; memset(data,0,sz*sizeof(float)); size=sz; } else data=NULL; } ~Buffer(){ if (data){ delete[] data; //why is this throwing an error } } void add(float * input, int num){ //this assumes that num < size memcpy(&data[writePoint],input,min(num,size-writePoint)*sizeof(float)); if (size-writePointi?writePoint-i:size-(i-writePoint))-1]; } float& operator [] (int i) { return data[(writePoint>i?writePoint-i:size-(i-writePoint))-1]; } private: size_t size; float *data; int writePoint; };