#include <iostream>
using namespace std;
template <typename E>
class SNode{
E elem;
SNode<E>* next;
friend class SLINKEDList <E>;
};
template <typename E>
class SLinkedList { // a singly linked list
public:
SLinkedList(); // empty list constructor
~SLinkedList(); // destructor
bool empty() const; // is list empty?
const E& front() const; // return front element
void addFront(const E& e); // add to front of list
void removeFront(); // remove front item list
private:
SNode<E>* head; // head of the list
};
template <typename E>
SLinkedList<E>::SLinkedList() // constructor
: head(NULL) { }
template <typename E>
bool SLinkedList<E>::empty() const // is list empty?
{
return head == NULL;
}
template <typename E>
const E& SLinkedList<E>::front() const // return front element
{
return head−>elem;
}
template <typename E>
SLinkedList<E>::~SLinkedList() // destructor
{
while (!empty()) removeFront();
}
template <typename E>
void SLinkedList<E>::addFront(const E& e) { // add to front of list
SNode<E>* v = new SNode<E>; // create new node
v−>elem = e; // store data
v−>next = head; // head now follows v
head = v; // v is now the head
}
template <typename E>
void SLinkedList<E>::removeFront() { // remove front item
SNode<E>* old = head; // save current head
head = old−>next; // skip over old head
delete old; // delete the old head
}
int main(){
return 0;
}
Я скопировал этот код узла из моей книги структур данных (Goodman), и у него есть ошибки, но я не уверен, почему. Я попытался вручную напечатать его, чтобы узнать, не является ли это проблемой кодировки символов, но, похоже, это не так. Я также попытался определить SLinkedLists, но это не изменило результаты. Ошибки:Как <синтаксическая ошибка?
Ошибка 1 ошибка C2059: ошибка синтаксиса: '<'
Ошибка 2 Ошибка C2238: непредвиденный лексем (ы), предшествующий ';'
'SLINKEDList' не был определен как класс шаблона в этом файле. Я предполагаю, что это то, что «SLINKEDList» есть, но компилятор не может предположить. –
Определение и перекомпиляция SLinkedList не помогает. – NickG
Когда компилятор достигает строки с вашей ошибкой, 'SLINKEDList' не был определен как класс шаблона. Вы должны определить его ** перед ** вы его используете. –