我想爲我的類創建更有用的調試消息,其中存儲數據。我的代碼看起來像這樣如何重載運算符<< for 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;
}
我希望qDebug() << model
將打印「Hello world!」。然而,在輸出中總是有一些像「QAbstractTableModel(0x1c7e520)」的東西。
你知道有什麼問題嗎?
1.它看起來像Qt希望流操作符是:QDebug運算符<<(QDebug dbg,const DataModel&model)[即通過值返回&傳遞QDebug],請參閱http://doc.trolltech.com/4.6 /debug.html#providing-support-for-the-qdebug-stream-operator 2.你已經聲明它爲:friend QDebug&operator <<(const QDebug&d,DataModel model);但是在沒有const的情況下定義它:QDebug&operator <<(QDebug&d,DataModel模型)[雖然它可能只是一個複製/粘貼錯誤 - 你的代碼不應該鏈接] – 2010-04-20 18:33:53