найти ошибку. и написать запись и чтение файла
Есть программа в которой есть два класса. Один класс содержится в другом. Классы 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;
}