Qt 使用qDebug() 打印Qlist 容器数据(将QDebug()定义成某个类的友元函数)

当QList<T>容器中的数据用qDebug() 打印时 ,假如 T 是内置类型(int  float ...)与 打印一个字符串使用完全一样,假如T 是一个CustomerClass 那么就得重载该类的<< 运算符。
有这样一个 LogLat 类定义如下
class LogLat
{

  ///[1]不可以将operator<< 定义为成员函数,应该将其声明为友元函数

   friend QDebug& operator<<(QDebug &debug, const LogLat &obj); 



public:
    LogLat(double log=0.0, double lat=0.0);


private:

    double log;
    double lat;
};



///[2]实现如下

QDebug& operator<<(QDebug& debug, const LogLat &obj) {
    debug << QString("[%1, %2]").arg(obj.log).arg(obj.lat);
    return debug;
}

///[3]测试如下
QList<LogLat> ls;
ls << LogLat(40.5, 90.89) << LogLat(40.5, 2.3)<< LogLat(50.5, 64.9);

qDebug() << ls;

https://blog.csdn.net/ypy9323/article/details/78328362


原文地址:https://www.cnblogs.com/findumars/p/8883733.html