Qt имеет хорошую функцию отладки, которая называется так
qDebug() << first_qobject << second_qobject;
создает строку с некоторыми "стандартными для строки" объектами и - и это важная часть - печатает \n
и выпускает пар после second_object
Я хочу воспроизвести это поведение по соглашению, согласно которому все мои классы имеют метод std::string to_string()
, который я вызываю:
struct myDebug{
template<typename T>
myDebug& operator<<(T t){
std::cout << t.to_string() << " "; // space-separated
return *this;
}
};
struct Point{
std::string to_string(){ return "42"; }
};
myDebug() << Point() << Point(); // should produce "42 42" plus a newline (which it doesn't)
Теперь у меня вопрос: есть ли способ узнать, что после возврата *this
во второй раз возвращаемый объект больше не вызывается? Так что я могу распечатать std::endl
? qDebug()
, кажется, может это сделать.