Я пытаюсь создать двусвязный список, в котором у каждого списка есть первый узел, последний узел и num_elements. Однако по какой-то причине, когда я пытаюсь протестировать код в файле UseList.cpp, я не могу получить значение num_elements равным нулю по умолчанию.
Позвольте мне показать вам, что я имею в виду:
В List.h:
template <class L>
class List
{
private:
Node<L> *first;
Node<L> *last;
int num_elements;
public:
// constructors and destructors
List();
[...]
}
[...]
template <class L>
List<L>::List() {
first = NULL;
last = NULL;
num_elements = 0;
}
[...]
Это метод show, расположенный внизу в list.h:
template <class L>
// Print out the data in each node separated by a space.
void List<L>::show() {
cout << num_elements << endl;
Node<L> *current_node = first;
while (current_node != NULL) {
cout << current_node->data << " ";
current_node = current_node->next;
}
cout << endl;
}
Обратите внимание, что там есть оператор cout для вывода num_elements.
Это соответствующая часть UseList.cpp:
int main (int argc, char *argv[]) {
cout << "-----------------------------------------" << endl;
cout << "----------------LIST ONE-----------------" << endl;
cout << "-----------------------------------------" << endl;
List<int> *list1;
srand(time(NULL));
list1->show();
[...]
Когда вызывается show, он печатает «1» и выдает ошибку сегментации. Почему для num_elements по умолчанию используется значение «1» вместо «0»?
Когда я делаю cout в List<L>::List() {
, ничего не печатается ... (это означает, что конструктор никогда не запускается?)
Спасибо за помощь!