LINUX.ORG.RU

Как отследить вталкивание std::endl в поток?

 ,


0

2

Доброго времени суток!

Есть некий собственный класс с перегруженным оператором <<, и при вталкивании std::endl хочется успеть сделать еще несколько манипуляций, но так как std::endl является шаблоном, то нельзя тупо проверить аргумент оператора <<.

Пока что вот на такой код

template <class T> 
    const TMyClass & TMyClass::operator << (const T & arg) const
{
    if (arg!=std::endl)
    {
        //do smth
    }
    else
    {
        //do smth else
    }
    return *this;
}

компилятор ругается так:

 error: reference to overloaded function could not be resolved; did you mean to call it?

★★

Последнее исправление: aido (всего исправлений: 1)

Скажите, вы этот метод в определении класса объявляли?

Мне почему-то кажется, что проблема в этом. Покажите строку, которой вы объявляете наличие такого метода.

Northsoft ★★
()
template <class T> 
    const TMyClass & TMyClass::operator << (const T & arg) const

чо?

f1u77y ★★★★
()
Последнее исправление: f1u77y (всего исправлений: 1)
Ответ на: комментарий от aido

Нет, ты норкоман, вместо того чтоб перегрузить os.flush ты занимаешься какой-то эпичной хренью в стиле XY.

A1
()
Ответ на: комментарий от aido

Твой оператор доллжен печатать в поток текст, он его внутри себя забуферизует, а когда и кто его будет флашить, твоего объекта вообще не касается.

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.