#pragma once #include "Company.h" #include class ParseCompanies { public : friend Company* parseUniqueCompanies(std::string, int a, std::string(*p)(const Company& c)); friend bool isCopy(Company const& compare, std::vector const& companies, std::string(*p)(const Company& c)); }; bool isCopy(Company const& compare, std::vector const& companies, std::string(*p)(const Company& c)) { for (auto k = companies.begin(); k != companies.end(); ++k) { if (p(compare) == p(*k)) return false; } return true; } Company* parseUniqueCompanies(std::string const& input, int& a, std::string(*p)(const Company& c)) { int id; std::string name; std::istringstream output(input); std::vector x; while (output >> id) { output >> name; Company object = Company(id, name); if (isCopy(object, x, p)) { x.push_back(object); a++; } } // ===========================PROBABLY THE PROBLEM PART=========================== Company* arr = new Company[x.size()]; int z = 0; for (auto k : x) { *(arr + z) = Company(x[z]); z++; } return arr; }