У меня так много проблем, когда мы выясняем, как печатать односвязный список, используя перегрузки операторов. Всякий раз, когда я пытаюсь скомпилировать, я получаю ошибки, говоря, что '->' не является перегруженным членом SLinkedList, а ошибки, говорящие «next», не являются членами SLinkedList. Вот что я до сих пор.Использование перегрузки оператора для печати Singlely Linked List
template <typename E> class SLinkedList;
template <typename E> class SNode;
template <typename E>
ostream& operator<< (ostream& out, const SLinkedList<E>& v);
template <typename E>
class SNode {
private:
E elem;
SNode<E>* next;
friend class SLinkedList<E>;
};
template <typename E>
class SLinkedList {
public:
SLinkedList();
~SLinkedList();
bool empty() const;
const E& front() const;
void addFront(const E& e);
void removeFront();
int getSize();
private:
SNode<E>* head;
int size;
};
template <typename E>
ostream& operator <<(ostream& out, SLinkedList<E>& v) {
for (SNode<E>* n = v->next; n != NULL; n = n->next)
{
out << n->elem;
}
return out;
}
//END OF CLASS METHOD DEFINITIONS
float randGen() {
float num = (rand() % 1000) + 1;
num = num/1000;
return num;
}
void main() {
SLinkedList<float> lst;
int lstElems = 10;
for (int i = 0; i < lstElems; i++) {
lst.addFront(randGen());
}
cout << lst << endl;
system("pause");
}
'V' является' SLinkedList & ',' не SLinkedList * ' –