Есть вот такой класс вещественного числа с двумя конструкторами:
class R
{
private:
double value;
public:
//конструктор
R(double a) : value(a) {};
R() : value(0) {};
//Геттер
double get_number() {return value;};
//Сеттер
void set_number(double a) {value = a;};
};
Есть вот такой класс очереди:
class Queue
{
private:
struct elem
{
elem *next, *prev;
R info;
};
elem *head, *tail;
int len;
public:
//конструктор
Queue(double inf)
{
head = new elem;
tail = new elem;
len = 1;
head->info.set_number(inf);
};
Queue()
{
head = NULL;
tail = NULL;
len = 0;
head->info.set_number(0);
}
...
Если я создаю такой объект:
a.dequeue();
Исполняется строка head->info.set_number(0);, после чего НЕ вызывается конструктор класса R, вызывается сеттер, ну а там вылезает ошибка памяти. Почему так?