Форум программистов, компьютерный форум CyberForum.ru

Добавлении данных из бинарного файла в очередь - C++

Восстановить пароль Регистрация
 
Marie
Сообщений: n/a
20.04.2010, 16:02     Добавлении данных из бинарного файла в очередь #1
Я пишу данные очереди в бинарный файл, потом считываю, отладчик пишит, что данные считаны, однако в функции enqueue происходит вылет проги. Помогите с идеями, я уже замучалась.
Код
Очередь: 

template <typename Item>
class QueueTP
{
private:
	enum {Q_SIZE = 10};
	class Node 
	{
	public:
		Item item;
		Node *next;
		Node (const Item & i): item(i), next(0) {}
	};

	Node *front;
	Node *rear;
	int itsSize; //текущее кол-во в очереди
	const int qsize; // макс. кол-во элементов
	QueueTP(const QueueTP & q) : qsize(0) {}
	QueueTP & operator=(const QueueTP & q) {return *this;}
public:
	QueueTP (int qs = Q_SIZE);
	~QueueTP();
	bool writeFile(std::ofstream & os);
	bool readFile(std::ifstream & is);
	void enqueue(const Item &item);
	void dequeue(Item &item);
	inline int size() const { return itsSize; }
	void clear();
	bool isempty() const


                         ...



Функция clear() для очистки всей очереди для считывания.

template <typename Item>
bool QueueTP<Item>::writeFile(std::ofstream & os)
{
	Node *temp = front;
	cout << "File" << endl;
	cout << temp->item;
	while (temp)
	{

		os.write(reinterpret_cast<char *> (&temp->item), sizeof(Item));
		temp = temp->next;
	}
	return true;
}

template <typename Item>
bool QueueTP<Item>::readFile(std::ifstream & is)
{
	clear();
	Item tmp;
	while (!is.eof())
	{
		is.read(reinterpret_cast <char *> (&tmp), sizeof(tmp));
		//enqueue(tmp);  //вот здесь все и рушится, точнее в самой функции
	}
	return true;
}





template <typename Item>
void QueueTP<Item>::enqueue(const Item &item)
{
	if (isfull())
		throw ExcEnqueue();
	Node *add = new Node(item); //создали узел node обвал проги!!!
	if (add == NULL)
		throw ExcEnqueue();
	itsSize++;
	if (front == 0)
		front = add; 
	else
		rear->next = add;
	rear = add;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2010, 16:02     Добавлении данных из бинарного файла в очередь
Посмотрите здесь:

Трабл с считыванием данных из бинарного файла C++
Считывание данных из бинарного файла C++
C++ Чтение данных из бинарного файла
C++ Как записывать и считывать не POD типы данных из бинарного файла?
Что-то не то с выводом сохранённых данных из бинарного файла C++
Считывание из бинарного файла и запись данных в две строковых переменные C++
Организовать хранение данных о владельцах автотранспорта в виде бинарного файла C++
C++ Чтение данных из бинарного файла

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 19:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru