Не могу понять, где я ошибся... (классы)
// 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)
заранее благодарен за помощь...
Объявил класс
...поскипано...
получается, что голова списка создается, заполняется... но это не та голова... ?!...
(больше в проекте нет нигде идентификатора pHead)
заранее благодарен за помощь...
Поправьте меня, если я ошибаюсь, но new List[1] создаст массим из одного 4-байтного элемента, куда можно будет запихать указатель на List, но конструктор для класса не вызовет.
В остальном у меня этот код работал правильно (c учетом исправлений типа List* list = new List();, и в makeFirst() pHead == list->pHead.
...поскипано...
Поправьте меня, если я ошибаюсь, но new List[1] создаст массим из одного 4-байтного элемента, куда можно будет запихать указатель на List, но конструктор для класса не вызовет.
Поправляю, ошибаешься!
Создастся массив из одного элемента типа List, при этом будет вызваны конструкторы для каждого элемента массива (в данном случае для единственного).
почему, когда вхожу в функцию makeFirst() (вызов типа list->makeFirst(параметры)), то в ней pHead != list->pHead ?
получается, что голова списка создается, заполняется... но это не та голова... ?!...
(больше в проекте нет нигде идентификатора pHead)
Не совсем понятно, что ты хотел сказать выражением pHead != list->pHead
Далее не понятно, зачем ты так создаешь объекты, точнее даже массивы единичного размера:
List* list = new List[1];
pHead = new node[1];
И хотя код корявый, но рабочий.
Не совсем понятно, что ты хотел сказать выражением pHead != list->pHead
Далее не понятно, зачем ты так создаешь объекты, точнее даже массивы единичного размера:
List* list = new List[1];
pHead = new node[1];
И хотя код корявый, но рабочий.
Извините, что не совсем понятно выразился:
Выражением pHead != list->pHead я хотел сказать, то что у меня получается, что это разные указатели... (они распологаются в памяти в разных местах... там разница у меня в 18 баит) и когда один указывает на что-либо, то второй продолжает быть равным NULL (list->pHead == NULL) на счет корявого кода - согласен, а вот на счет рабочего не очень... :(
Я вложил файл с исходниками - если не лень, можете взглянуть... там еще текстовичок с доп. инфой...
Тем, кто пытался помочь - спасибо.
Поправляю, ошибаешься!
И сколько радости в голосе...
Не ошибается тот, кто ничего не делает.