Как перегрузить оператор << только для cout?
std::ostream& operator<< (ostream& s,const Books &book){
return
(...);
}
Как мне перегрузить только для cout? Я так же записываю данные в файл
void FileTXT::writeTXT(const Item& Item)
{
ofstream myfile;
std::string fileName = "../Item.txt";
try
{
myfile.open(fileName, fstream::in | fstream::out | fstream::app);
printf("File has been opened!\n");
myfile << Item;
}
catch(const std::ofstream::failure& e)
{
std::cerr << e.code() << '\n';
}
myfile.close();
}
Но у меня загружается не объект класса, а результат после перегрузки
Ответы (1 шт):
Автор решения: AR Hovsepyan
→ Ссылка
Проверить идентичность буфера потока с буфером std::cout :
//только для cout
std::ostream& operator<< (std::ostream& s, const Books& book) {
std::streambuf* buf = s.rdbuf();
if (buf == cout.rdbuf())
s << book._mem//...;
else
//можете генерировать исключение
//но это не всегда хорошо
std::cerr << "\n error\n";
return s;
}
После этого можете вводить только в консоль:
myfile << Books(); //error
cout << Books(); //правильно