У меня есть структура, как показано ниже:
std :: list -> Включает список объектов в типе VolataliteAnalyzer * (это мой пользовательский класс) -> Объект VolataliteAnalyzer сохраняет объект ofstream, как показано в коде ниже. И я вызываю метод ниже, чтобы написать соответствующие файлы
void VolataliteAnalyzer::writeToFile (unsigned long orderBookId,double volatalite,double currentWarrantPrice,double stockPrice,double expireDate,double strikePrice)
{
logger.logMessage(new MessageInfoLog(std::string(__PRETTY_FUNCTION__)+" Writing File For :"+std::to_string(orderBookId)));
if (!warrantFile.is_open()) {
std::string filePath = std::string(FILE_NAME)+std::string("_")+std::to_string(orderBookId)+std::string(FILE_EXT);
warrantFile.open (filePath,std::ios_base::app);
logger.logMessage(new MessageInfoLog(std::string(__PRETTY_FUNCTION__)+" Creating File:"+filePath));
}
warrantFile << this->getCurrentDate()+DELIMETER+std::to_string(volatalite)+DELIMETER+std::to_string(currentWarrantPrice)+DELIMETER+std::to_string(stockPrice)+DELIMETER+std::to_string(expireDate)+DELIMETER+std::to_string(strikePrice)+"\n";
}
Однако, когда я вызываю этот метод для разных объектов в массиве, он всегда записывает в один и тот же файл. Но вместо этого он должен записывать в уникальные файлы для каждого объекта в массиве. Я проверял это много раз, но не смог понять причину. Я подозревал, что если объекты ofstream одиночные или что-то в этом роде?
class VolataliteAnalyzer {
public:
double selectedVolatalite=0;
VolataliteAnalyzer();
void writeToFile(unsigned long orderBookId,double volatalite,double currentWarrantPrice,double stockPrice,double expireDate,double strikePrice);
void finishWriting();
bool loadFromFile(unsigned long orderBookId);
void getSelectedVolatalite(int dayCount);
private:
Logger& logger;
std::ofstream warrantFile;
std::ifstream warrantReader;
std::string getCurrentDate();
std::list<Volatalite *> dailyVolatalites;
Volatalite* getVolatalite(std::string date);
};