gpt4 book ai didi

c++ - QT << 过载不工作 QT5.3

转载 作者:行者123 更新时间:2023-11-30 01:50:38 24 4
gpt4 key购买 nike

我正在尝试为客户端对象重载 << 运算符:

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。

谢谢大家!

最佳答案

当您定义 <<运算符,它应该像这样定义:

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

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

关于c++ - QT << 过载不工作 QT5.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27219677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com