У меня ошибка с моим конструктором копирования.
У меня есть класс MyData следующим образом:
class MyData
{
private:
std::vector<double> wavelength;
std::vector<double> amplitude;
public:
MyData::MyData(void) {}
MyData::MyData(const MyData &cSource)
: wavelength(cSource.wavelength), amplitude(cSource.amplitude)
{}
}
В моей основной программе я вставляю объекты MyData в кольцевой буфер. Вот как я читаю это в основном:
MyData data;
data = removeq(&q);
Проблема в том, что иногда в копируемых данных отсутствуют некоторые значения. И т.д., если исходный размер длины волны равен 1, скопированные данные показывают 0. Я отладил свою программу, и данные в кольцевом буфере верны, и т.д., он показывает правильный размер 1.
У кого-нибудь есть идеи, если мой конструктор копирования неверен или мне нужна перегрузка оператора присваивания ??
Спасибо!
Код, который я использовал для вставки / удаления в кольцевой буфер:
void insertq(struct queue *p, MyData v)
{
int t;
t = (p->rear+1)%MAX;
if(t == p->front)
{ }
else
{
p->rear = t;
p->arr[p->rear] = v;
}
}
MyData removeq(struct queue *p)
{
MyData empty;
if(isempty(p))
{
return empty;
}
else
{
p->front = (p->front + 1)%MAX;
empty = p->arr[p->front];
return empty;
}
}