Вам необходимо установить current
на s.head
, а не просто head
, что не определено, поскольку перегрузка этого оператора, не являющегося членом, (как следует из его названия) не является членом.
Вы также неправильно продвигаете указатель; вы должны напечатать по одному info
на каждой итерации следующим образом:
РЕДАКТИРОВАТЬ: если вы хотите напечатать 5 в строке, то сделайте это:
int i = 0;
while (current != NULL) //while more data to print
{
os << current->info << " ";
current = current->link;
if (i % 5 == 0) {
cout << '\n';
i = 0;
} else
++i;
}
os << '\n'; // print the ending newline
Также Type
не определен (если только он не находится в коде, который вы не опубликовали) Если ваш List
является шаблоном, вам нужно также заставить вашего оператора перегружать шаблон.
Пожалуйста, инициализируйте переменные вместо того, чтобы объявлять их и затем присваивать им. Это:
nodeType<Type> *current; //pointer to traverse the list
current = head; //set current so that it points to the first node
должно быть
nodeType<Type>* current = s.head;