Перегрузка >>, << при считывании из текстового файла

Задание: Реализуйте возможность хранения в связном списке сотрудников из файла list.txt. Для этого:
— создайте класс employee, полями данных которого будут данные о сотрудниках,
хранящиеся в файле list.txt, а именно: идентификационный номер, имя, фамилию и оклад;
— напишите дружественную классу employee функцию, которая будет перегружать
операцию извлечения данных из потока (>>) для объектов данного класса;
— напишите дружественную классу employee функцию, которая будет перегружать
операцию вставки данных в поток (<<) для объектов данного класса ;
В функции main():
— с помощью шаблона класса linklist создайте связный список для хранения объектов класса
employee;
— считайте данные о сотрудниках из файла list.txt;
— запишите считанные из файла данные в связный список;
— выведите весь список на экран.
Ошибку выдает в main — file >> current;
кто может помочь с выполнением и объяснением?

include <iostream>

include <conio.h>

include <windows.h>

include <iomanip>

include <fstream>

include <string>

using namespace std;
void read_f(string);
fstream list;

template<class Type>
struct link {
Type data;
link next;
};
template <class Type>
class linklist {
private:
link<Type>
first;
public:
linklist()
{
first = NULL;
}
void additem(Type d);
void display();

};

class employers {
private:
int id;
string fname;
string iname;
float salary;
public:
employers() : id(0), fname(«fname»), iname(«iname»), salary(0.0)
{}

friend ostream& operator << (ostream&, const employers&);
friend std::istream& operator >> (istream&, employers&);
};

ostream& operator <<(ostream& os, const employers& e)
{
os << e.id <<« »<< e.fname << « » << e.iname << « » << e.salary<< endl;
return os;
}

istream& operator >> (istream& is, employers& e)
{
is >> e.id >> e.fname >> e.iname >> e.salary;
return is;
}

template<class Type>
void linklist<Type>::additem(Type d) {
link<Type>* newLink = new link<Type>;
newLink->data = d;
newLink->next = first;
first = newLink;
}

template<class Type>
void linklist<Type>::display() {
link<Type>* current = first;
while (current) {
cout << current->data << endl;
current = current->next;
}
}

int main() {

system(«chcp 1251 > nul»);
string file = «C:/Users/Bqerm/OneDrive/Рабочий стол/7 семестр/7 семестр/7 семестр/20/list.txt»;

linklist<int> list;
for (int i = 0; i < 6;i++) {
int current;
file >> current; (ЗДЕСЬ ПОДЧЕРКИВАЕТ ОШИБКУ >>)
list.additem(current);
}
list.display();

_getche();
}

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.