Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не могу понять, где я ошибся... (классы)

2.4K
15 сентября 2004 года
nihil
56 / / 28.02.2004
Объявил класс

// class of a list
class List {
private:
// cnt of elements of a list
int nCount;
// pointers at the head and the current
node* pHead;
public:
// constructor
List();
// destructor
~List();
// addition
node* makeFirst(data* pData);

};


Объявил метод

node* List::makeFirst(data* pData)
{
try {
pHead = new node[1];
}
catch(...) {
// if new threw exception
return NULL;
}
pHead->d = pData;
pHead->next = NULL;
pHead->prev = NULL;
return pHead;
}

Создал объект класса

List* list = new List[1];

почему, когда вхожу в функцию makeFirst() (вызов типа list->makeFirst(параметры)), то в ней pHead != list->pHead ?
получается, что голова списка создается, заполняется... но это не та голова... ?!...
(больше в проекте нет нигде идентификатора pHead)

заранее благодарен за помощь...
294
16 сентября 2004 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by nihil
Объявил класс

...поскипано...

Цитата:
почему, когда вхожу в функцию makeFirst() (вызов типа list->makeFirst(параметры)), то в ней pHead != list->pHead ?
получается, что голова списка создается, заполняется... но это не та голова... ?!...
(больше в проекте нет нигде идентификатора pHead)

заранее благодарен за помощь...


Поправьте меня, если я ошибаюсь, но new List[1] создаст массим из одного 4-байтного элемента, куда можно будет запихать указатель на List, но конструктор для класса не вызовет.
В остальном у меня этот код работал правильно (c учетом исправлений типа List* list = new List();, и в makeFirst() pHead == list->pHead.

3
16 сентября 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Plisteron
...поскипано...
Поправьте меня, если я ошибаюсь, но new List[1] создаст массим из одного 4-байтного элемента, куда можно будет запихать указатель на List, но конструктор для класса не вызовет.


Поправляю, ошибаешься!
Создастся массив из одного элемента типа List, при этом будет вызваны конструкторы для каждого элемента массива (в данном случае для единственного).

Цитата:
Originally posted by nihil

почему, когда вхожу в функцию makeFirst() (вызов типа list->makeFirst(параметры)), то в ней pHead != list->pHead ?
получается, что голова списка создается, заполняется... но это не та голова... ?!...
(больше в проекте нет нигде идентификатора pHead)


Не совсем понятно, что ты хотел сказать выражением pHead != list->pHead
Далее не понятно, зачем ты так создаешь объекты, точнее даже массивы единичного размера:
List* list = new List[1];
pHead = new node[1];

И хотя код корявый, но рабочий.

2.4K
16 сентября 2004 года
nihil
56 / / 28.02.2004
Цитата:
Originally posted by Green

Не совсем понятно, что ты хотел сказать выражением pHead != list->pHead
Далее не понятно, зачем ты так создаешь объекты, точнее даже массивы единичного размера:
List* list = new List[1];
pHead = new node[1];

И хотя код корявый, но рабочий.



Извините, что не совсем понятно выразился:
Выражением pHead != list->pHead я хотел сказать, то что у меня получается, что это разные указатели... (они распологаются в памяти в разных местах... там разница у меня в 18 баит) и когда один указывает на что-либо, то второй продолжает быть равным NULL (list->pHead == NULL) на счет корявого кода - согласен, а вот на счет рабочего не очень... :(

Я вложил файл с исходниками - если не лень, можете взглянуть... там еще текстовичок с доп. инфой...

2.4K
16 сентября 2004 года
nihil
56 / / 28.02.2004
Я сделал.
Тем, кто пытался помочь - спасибо.
294
17 сентября 2004 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by Green

Поправляю, ошибаешься!


И сколько радости в голосе...
Не ошибается тот, кто ничего не делает.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог