我试图重载客户端对象的<<操作符:
void Login::saveClient(Client *client)
{
this->file = new QFile(CLIENTS_FILE);
this->file->open(QIODevice::Append | QIODevice::Text);
QTextStream out(this->file);
out << client;
}在我的客户中
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
0x13534a480
有人能帮我吗?
在moosingin3space的帮助下(非常感谢)和一些适应,我设法使这项工作。我不得不把QDataStream改为QTextStream。
谢谢大家!
发布于 2014-11-30 23:46:50
在定义<<运算符时,应该将其定义如下:
QDataStream& operator<<(QDataStream& s, const Client& c)C++中的流运算符被设计用来处理引用,而不是指针。
https://stackoverflow.com/questions/27219677
复制相似问题