У меня есть класс FileTransfer, который использует объект ofstream, log. Конструктор класса вызывает open () для объекта ofstream, а logFileName имеет значение по умолчанию в файле .h.
class FileTransfer {
public:
FileTransfer(char *logFileName = "client log.txt");
bool sendFile();
ofstream log; // log file
};
FileTransfer::FileTransfer(char * logFileName) {
this -> logFileName = logFileName;
// Open log file
log.open(logFileName);
}
В другом методе класса, sendFile (), я использую поток для регистрации событий.
bool FileTransfer::sendFile() {
log << "Sender: starting on host " << localhost << endl;
}
Когда у меня так, ничего не записывается в файл журнала. Я попытался проверить log.is_open () и good (), и оба возвращают true.
РЕДАКТИРОВАТЬ:
int main() {
FileTransfer * ft = new FileTransfer(); // open() is called
ft -> sendFile();
}
Если я вызываю log.open () в методе FileTransfer :: sendFile () непосредственно перед операциями вывода, то вывод работает отлично.
bool FileTransfer::sendFile() {
log.open(logFileName);
log << "Sender: starting on host " << localhost << endl;
}
Почему он это делает?