Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2009, 16:28   #1
(*_*)
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 30
По умолчанию Констурктор класса и список

Подскажите, как создать конструктор класса, с помощью которого объект добавляется в список?
Пытаюсь сделать вот так:
Файл класса:
Код:

#include "iostream"

#include "string"

using namespace std;

class Student
{

public:

string name;
string patronymic;

Student *next;          // Адрес следующей записи
Student *previous;   // Адрес предыдущей записи


Student(Student *p, Student *rr)  // Конструктор с параметрами
{

cout << " Имя: "; 

cin >> rr->name;

cout << " Фамилия: "; 

cin >> rr->patronymic;

// Изменение адресных полей:

p->next = rr;             
rr->previous = p;
rr->next = 0;
p = rr;

}

Student()  // Конструктор без параметров
{
}

}
Файл программы:

Код:

#include "stdafx.h"
#include "conio.h"
#include "ClassStudent.cpp"
#include "iostream"
;
using namespace std;

void main(void)
{

Student *p;  // Переменная первой записи

Student *rr; // Переменная текущей записи

Student *beg; // Переменная начала списка

int n;            // Количество записай

cout << "n?: "; 

cin >> n;

cout << endl;

if(n==1)        // Если всего одна запись
{
	p = new (Student);
	beg = p;

cout << " Имя: "; 

cin >> p->name;

cout << " Фамилия: "; 

cin >> p->patronymic;

	p->previous = 0;
	p->next = 0;

}

else
{

p = new (Student);      // Создание первого элемента в списке

  beg = p;

cout << " Имя: "; 

cin >> p->name;

cout << " Фамилия: "; 

cin >> p->patronymic;

	p->previous = 0;
	p->next = 0;

for (int i = 1; i < n; i++)    // Создание следующих элементов в списке
{

rr = new Student(p,rr);

system ("cls");
}


}

getch();

}
После запуска вылетает на строчки: "rr = new Student(p,rr)". Что тут происходит? Сначало переменной rr присваивается значение адреса? Или сначало она "пустая" передается в конструктор? И поэтому вылетает?
Может как-то по другому можно реализовать данную задачу?
(*_*) вне форума Ответить с цитированием
Старый 23.05.2009, 16:32   #2
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Как звучит ошибка?
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 23.05.2009, 16:36   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Код:
rr = new Student(p,rr);
Изначально у Вас rr == NULL
В конструкторе же написано:
Код:
Student(Student *p, Student *rr)  // Конструктор с параметрами
{

cout << " Имя: "; 

cin >> rr->name;
При rr == NULL на строке rr->name; полюбому вылетит, что вероятно и происходит
pu4koff вне форума Ответить с цитированием
Старый 23.05.2009, 17:09   #4
(*_*)
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 30
По умолчанию

Ошибка: Run-Time Check Failure #3 - The variable 'rr' is being used without being initialized.
Как то можно исправить?
(*_*) вне форума Ответить с цитированием
Старый 23.05.2009, 17:16   #5
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

rr не инициализирован.

Код:
Student *rr = new(Student);
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 Класса Ambroyz Общие вопросы .NET 8 30.04.2009 10:49
Конструкторы класса и двунаправленный список (*_*) Общие вопросы C/C++ 2 29.04.2009 18:17
Создание класса Dogmat Общие вопросы C/C++ 2 12.01.2009 14:32
Данные-проверка-список (список на другом листе) Inbox Microsoft Office Excel 7 26.12.2008 01:43
Создание класса Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 31.05.2008 11:54