У меня похожая проблема: Проблемы с использованием fstream в классе
Я четко понимаю, что не могу скопировать объект fstream.
Теперь .. я хочу иметь вектор структур, который включает fstream. поэтому я создал эти typedefs:
typedef struct
{
uint16_t output;
std::string outputStr;
std::fstream fileStream{};
} LogOutput;
typedef std::vector <LogOutput> vecLogOutput;
Проблемы возникают, когда я пытаюсь добавить что-то к этому вектору:
vecLogOutput vLO;
LogOutput lo;
// CREATE 3 LogOutputs, and add them, to vector
for (int i = 0; i < 3; i++)
{
lo.output = i;
lo.outputStr = "fileout" + std::to_string(i) + ".txt";
lo.fileStream.open(lo.outputStr, std::fstream::out | std::fstream::trunc);
vLO.emplace_back(lo);
}
Я думаю, что единственный способ сделать это правильно,заполнение вектора будет ссылками на LogOutput вместо самих объектов. И, конечно же, не забудьте удалить объекты