Я реализовал перегрузку оператора << для struct LevelStats, которая, кажется, хорошо работает с файлами, но столкнулась с проблемой при использовании с заголовочным файлом std :: cout </p>
:
struct LevelStats
{
DIFFICULTY level;
std::chrono::duration<double> best_time;
unsigned int games_played;
unsigned int games_won;
};
std::ofstream& operator<<(std::ofstream &os, const LevelStats &stats);
cpp file:
std::ofstream &operator<<(std::ofstream &os, const LevelStats &stats) {
os << static_cast<unsigned int>(stats.level) << " " << "Best_Time= " << stats.best_time.count()<<std::endl;
os << static_cast<unsigned int>(stats.level) << " " << "Games_Played= " << stats.games_played<<std::endl;
os << static_cast<unsigned int>(stats.level) << " " << "Games_Won= " << stats.games_won<<std::endl;
return os;
}
Это хорошо работает для таких операций, как
file << LevelStats object </p>
, но при использовании в качестве
std :: cout << Объект LevelStats </p>
приводит к:
ошибка: невозможно связать 'std :: ostream {aka std:: basic_ostream} 'lvalue to' std :: basic_ostream && '
Редактировать: заменен на std :: ostream и встречает ту же ошибку Другое редактирование: тупая ошибка в аргументах - работает