friend Methoden in Template Klassen
Verfasst: Mo Jan 18, 2021 11:25 am
Hallo zusammen,
ich hab gerade ein Problem mit meiner List<T> Klasse. Würde dort sehr gerne eine Output Operation zur Verfügung stellen. Diese realisiere ich über friend ostream &operator<<(ostream &os, ListNode &other);
Nun habe ich aber das Problem das ich in der Header Datei nicht ListNode<T> schreiben kann. Weil er das T nicht kennt.
Weiß jemand wie man in Template Klassen friend Operatoren implementiert bekommt?
Hier mal mein Code zusammengefasst =)
Hoffe das ganze ist so weit verständlich
Natürlich ist in der ListNode Klasse noch mehr drin, Konstruktoren etc. habe ich raus genommen. Die void print() Mehtode macht derzeit das, was der << Operator später machen soll =D
ich hab gerade ein Problem mit meiner List<T> Klasse. Würde dort sehr gerne eine Output Operation zur Verfügung stellen. Diese realisiere ich über friend ostream &operator<<(ostream &os, ListNode &other);
Nun habe ich aber das Problem das ich in der Header Datei nicht ListNode<T> schreiben kann. Weil er das T nicht kennt.
Weiß jemand wie man in Template Klassen friend Operatoren implementiert bekommt?
Hier mal mein Code zusammengefasst =)
Code: Alles auswählen
#ifndef LISTNODE_H_
#define LISTNODE_H_
#include <memory>
#include <iostream>
using namespace std;
template<class T>
class ListNode {
private:
class Node {
private:
T value;
unique_ptr<Node> next;
public:
Node(T value = { }, unique_ptr<Node> next = nullptr) :
value(value), next(move(next)) { }
unique_ptr<Node>& getNext() { .... }
void setNext(unique_ptr<Node> next) { .... }
T getValue() const { .... }
void setValue(T value) { ... }
};
unique_ptr<Node> anfang;
void recInsert(unique_ptr<Node> &s, T value);
void rekCopy(const unique_ptr<Node> &pAct);
void recPrint(const unique_ptr<Node> &s);
public:
ListNode();
virtual ~ListNode() = default;
ListNode(const ListNode<T> &other);
ListNode(ListNode<T> &&other);
ListNode<T>& operator=(const ListNode<T> &other);
ListNode<T>& operator=(ListNode<T> &&other);
void insert(T value);
void print();
friend ostream &operator<<(ostream &os, ListNode<T> &other);
};
//ostream &operator<<(ostream &os, ListNode<T> &other) {
// return os;
//}
#endif /* LISTNODE_H_ */

Natürlich ist in der ListNode Klasse noch mehr drin, Konstruktoren etc. habe ich raus genommen. Die void print() Mehtode macht derzeit das, was der << Operator später machen soll =D