Estoy intentando crear más mensajes de depuración útiles para mi clase donde almacenar datos. Mi código está buscando algo como estoCómo sobrecargar el operador << para qDebug
#include <QAbstractTableModel>
#include <QDebug>
/**
* Model for storing data.
*/
class DataModel : public QAbstractTableModel {
// for debugging purposes
friend QDebug operator<< (QDebug d, const DataModel &model);
//other stuff
};
/**
* Overloading operator for debugging purposes
*/
QDebug operator<< (QDebug d, const DataModel &model) {
d << "Hello world!";
return d;
}
espero qDebug() << model
imprimirá "Hello World!". Sin embargo, siempre hay algo así como "QAbstractTableModel (0x1c7e520)" en la salida.
¿Tiene alguna idea de lo que está mal?
1. Parece que Qt quiere que el operador de flujo sea: QDebug operator << (QDebug dbg, const DataModel & model) [es decir, devolver y pasar QDebug por valor], ver http://doc.trolltech.com/4.6 /debug.html#providing-support-for-the-qdebug-stream-operator 2. lo ha declarado como: amigo QDebug & operator << (const QDebug & d, modelo DataModel); pero lo definió sin la const: QDebug & operator << (QDebug & d, modelo DataModel) [aunque probablemente sea solo un error de copiar/pegar - tu código no debería vincular] –