QT<<超载不工作QT5.3

时间:2014-11-30 23:42:12

标签: c++ qt

我试图重载<<客户端对象的运算符:

void Login::saveClient(Client *client)
{
    this->file = new QFile(CLIENTS_FILE);
    this->file->open(QIODevice::Append | QIODevice::Text);
    QTextStream out(this->file);
    out << client;
}

在我的Client.h中,我有:

class Client : public QObject
{
    Q_OBJECT

public:
    Client(QString username);

    friend QDataStream & operator <<(QDataStream &s, Client *c);

    QString getUsername();
}

在我的Client.cpp中:

Client::Client(QString username)
{
    this->username = username;
}

QDataStream & operator <<(QDataStream &s, Client *c)
{
    s << c->getUsername();
    return s;
}

QString Client::getUsername()
{
    return this->getUsername();
}

但是在文件中我得到了指针的地址:

0x135551c7c0

0x13534aa480

任何人都可以帮我吗?

在moosingin3space的帮助下(非常感谢)和一些改编我设法使这项工作。我必须将QDataStream更改为QTextStream。

谢谢大家!

1 个答案:

答案 0 :(得分:4)

定义<<运算符时,应按如此定义:

QDataStream& operator<<(QDataStream& s, const Client& c)

C ++中的流操作符旨在处理引用,而不是指针。