Bool: неправильный вывод cout не 0 или 1

У меня есть функция, которая читает запросы: по отметке времени, текущему этажу и этажу назначения, и она не выводит, как я ожидал.

Все значения моего члена выводятся правильно: отметка времени, текущий этаж и этаж назначения за исключением bool.

Bool выводит 205 вместо 1 или 0 для моего направления.

Elevator::readRequests()

{
ifstream myStream("T1.txt");

while(!myStream.eof())
{
int timestamp ,currentFloor, destinationFloor;myStream >> timestamp >> currentFloor >> destinationFloor;
//cout<< endl <<"The current timestamp is "<< timestamp << "The current floor is " << currentFloor
//  << " and the destination floor is " << destinationFloor << endl << endl;
//cout<< endl;

reqNode *temp = new reqNode;

//initialize request node object
temp->timestamp = timestamp;
temp->start = currentFloor;
temp->destination = destinationFloor;
temp->start_time = -1;
temp->finish_time = -1;

temp->calculate_priority();

if(temp->start < temp->destination)
temp->set_dir(true);
else
temp->set_dir(false);

request.push(*temp);//push nodes into the request bank
}
int i = 0;
while( !request.empty() )
{

cout << "Node " << i << " : " << request.front().timestamp << " " <<    request.front().start << " " << request.front().destination
<< " " <<  request.front().direction << endl;

request.pop();//popping the request in order to test
i++;
}}

Я пытаюсь получить вывод:

Узел №: метка времени. Текущий (Пользовательский этаж). Назначение (этаж пользователя). Направление (пользователь движется).

Node 0 : 1 3 7 1
Node 1 : 1 2 9 1
Node 2 : 1 7 9 1
Node 3 : 2 4 6 1
Node 4 : 2 4 8 1
Node 5 : 2 1 17 1
Node 6 : 5 1 15 1
Node 7 : 5 5 1 0
Node 8 : 6 17 4 0
Node 9 : 6 4 17 1

Вместо этого я получаю в качестве вывода:

Node 0 : 1 3 7 205
Node 1 : 1 2 9 205
Node 2 : 1 7 9 205
Node 3 : 2 4 6 205
Node 4 : 2 4 8 205
Node 5 : 2 1 17 205
Node 6 : 5 1 15 205
Node 7 : 5 5 1 205
Node 8 : 6 17 4 205
Node 9 : 6 4 17 205

это файл T1.txt:

1 3 7
1 2 9
1 7 9
2 4 6
2 4 8
2 1 17
5 1 15
5 5 1
6 17 4
6 4 17

0

Решение

205 является 0xCD, Обычно это означает, что вы используете неинициализированную переменную.

Исходя из кода в оригинальном вопросе, вам необходимо скопировать direction в конструкторе копирования reqNode, Судя по выводу, он не был скопирован.

Кроме того, так как ваш вектор, кажется, vector<reqNode>Вам не нужно выделять временный reqNode с new, Просто создайте его в стеке и передайте requests.push_back,

3

Другие решения

request.push(*temp) делает копию объекта, который temp указывает на. В качестве стиля вы должны удалить указатель после выполнения этого, так как этот объект больше не нужен. Более того, создайте его как автоматический объект, а не обновляйте его. С ++ не Java

Поскольку сохраняемая копия имеет значения, отличные от оригинала, предполагается, что конструктор копирования для reqNode не копирует правильно.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector