首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT <<重载无法工作QT5.3

QT <<重载无法工作QT5.3
EN

Stack Overflow用户
提问于 2014-11-30 23:42:12
回答 1查看 257关注 0票数 1

我试图重载客户端对象的<<操作符:

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

在我的客户中

代码语言:javascript
复制
class Client : public QObject
{
    Q_OBJECT

public:
    Client(QString username);

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

    QString getUsername();
}

在我的Client.cpp:

代码语言:javascript
复制
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

0x13534a480

有人能帮我吗?

在moosingin3space的帮助下(非常感谢)和一些适应,我设法使这项工作。我不得不把QDataStream改为QTextStream。

谢谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-30 23:46:50

在定义<<运算符时,应该将其定义如下:

代码语言:javascript
复制
QDataStream& operator<<(QDataStream& s, const Client& c)

C++中的流运算符被设计用来处理引用,而不是指针。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27219677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档