Przeciżanie operatorów << i >>

0

Cześć,
piszę program, który ma za zadanie wczytać dane liczbowe z pliku, posortować je, a następnie posortowane wpisać do kolejnego pliku, mam problem z przeciążeniami operatorów i chciałbym się do was zwrócić z prośbą o drobną pomoc.

Plik .h

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

class Liczby
{
    vector <Liczby> tab;
public:
    Liczby();
    void wczytanie(Liczby &);
    void sortowanie(Liczby &);
    void zapisanie(Liczby &);
    friend istream & operator>>(istream &, Liczby &);
    friend ostream &operator<<(ostream &, Liczby &);
    ~Liczby();
};

Plik .cpp

#include <iostream>
#include <fstream>
#include "liczby.h"
#include <vector>
#include <algorithm>
using namespace std;

Liczby::Liczby() {};
istream & operator >>(istream &wejscie, Liczby &l)
{
    wejscie >> l.tab;
    return wejscie;
}
ostream & operator <<(ostream &wyjscie, Liczby &l)
{
    return wyjscie<<l.tab;
}
void Liczby::wczytanie(Liczby &l)
{
    fstream plik;
    plik.open("liczby.txt");
    if(!plik)
    {
        cout<<"Blad otwarcia!";
        exit(1);
    }
    plik>>l.tab;
    plik.close();
}
void Liczby::sortowanie(Liczby &l)
{
    sort(tab.begin(), tab.end());
}
void Liczby::zapisanie(Liczby &l)
{
    fstream plik;
    plik.open("zapis.txt");
    if(!plik)
    {
        cout<<"Blad otwarcia!";
        exit(1);
    }
    plik<<l.tab;
    plik.close();
}

Liczby::~Liczby() {};

Wszelka pomoc bardzo mile widziana

PS jeżeli ktoś by zauważył również w reszcie kodu jakieś niedopatrzeania to również będe wdzięczny

0

Jaki jest ten problem?

1

Przykładowo:

istream & operator >>(istream &wejscie, Liczby &l)
{
    for (auto i{0}; i < l.tab.size(); ++i)
        wejscie >> l.tab[i];
    return wejscie;
}
0

Po tej zmianie wyskakuje mi błąd przy lini
plik>>l.tab
co bym musiał zmienic żeby to działało?

0
plik >> l;

1 użytkowników online, w tym zalogowanych: 0, gości: 1