найти ошибку. и написать запись и чтение файла

Есть программа в которой есть два класса. Один класс содержится в другом. Классы Directory и Firm. Класс Directory содержит Firm. В классе Firm есть структура. Я написал функцию поиска в которой проверяется эта структура и она почему, то не видит данных структуры. Здесь мне нужна помощь найти ошибку. Вторая проблема нужно дописать функцию запись и чтение с файла. В классе Directory есть только одна переменная vector>company. Когда я реализовал, свою запись то только записывается адреса. И это понятно почему, а как записать данные с массива умных указателей в файл.

Вот код. Класс Firm header

#pragma once
#include<string>
#include<iostream>
using namespace std;


struct Name {
    string first_name;
    string second_name;
    string last_name;
};

class Firm
{
    string Name_of_the_company;
    Name person;
    string telephone;

Гетеры и сеттеры для struct 


void Firm::setName(const string & f, const string & s, const string & l)
{
    person.first_name = f;
    person.second_name = s;
    person.last_name = l;

}

const Name & Firm::getName_of_the_owner() const
{
    return Name();
}

Класс Directory функции записи и чтения с файла.

 void Directory::read_from_file() {
    fstream fin("Mydata.txt", ios::in);
    if (fin.is_open()) {
        copy(istream_iterator<shared_ptr<Firm>>(fin), std::istream_iterator<shared_ptr<Firm>>(), std::back_inserter(company));
        fin.close();
    }
}


vector<shared_ptr<Firm>> Directory::find_by_name_of_the_company(const string & name)
{
    vector<shared_ptr<Firm>>tmp;
    copy_if(company.begin(),company.end(), back_inserter(tmp), [&name](const shared_ptr<Firm> &obj) {
        return obj->getName()==name;
    });
    return tmp;
}

Ответы (0 шт):