überladen Ich versuche, nützlichere Debug-Nachrichten für meine Klasse zu erstellen, wo Daten speichern. Mein Code sieht so etwas wie diesesWie Operator << für 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;
}
I qDebug() << model
erwarten druckt "Hallo Welt!". Es gibt jedoch immer etwas wie "QAbstractTableModel (0x1c7e520)" auf der Ausgabe.
Haben Sie eine Idee, was los ist?
1. Es sieht so aus, als ob Qt den Stream-Operator haben möchte: QDebug operator << (QDebug dbg, const DataModel & model) [nämlich Rückgabe und Weitergabe von QDebug nach Wert], siehe http://doc.trolltech.com/4.6 /debug.html#providing-support-for-the-qdebug-stream-operator 2. Sie haben es wie folgt erklärt: Freund QDebug & Operator << (Const QDebug & d, DataModel-Modell); aber definiere es ohne const: QDebug & operator << (QDebug & d, DataModel-Modell) [obwohl es wahrscheinlich nur ein Copy/Paste-Fehler ist - dein Code sollte es nicht verlinken] –