• 4745阅读
  • 4回复

[提问]自定义类的问题 重载操作符问题 [复制链接]

上一主题 下一主题
离线wq9706
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-05
QDataStream &;operator>>(QDataStream &in,Users &users)
{
    int _ID;
    QString _user;
    QString _password;
     in >> _ID
            >>_user
            >>_password;
users=Users(_ID,
              _user,
              _password);
    return in;
}
为什么出错?提示users.cpp:41: error: no match for 'operator>>' in 'in >>_ID
离线wxj120bw

只看该作者 1楼 发表于: 2011-05-06
你确定在QDataStream类里有这样函数吗 operator >> (qstring &)
离线wq9706
只看该作者 2楼 发表于: 2011-05-06
#ifndef USERS_H
#define USERS_H
#include <QString>

class Users
{
private:
    int p_ID;
    QString p_user;
    QString p_password;
public:
    Users();
    Users(const int &_ID,
          const QString &_user,
          const QString &_password){
        p_ID=_ID;
        p_user=_user;
        p_password=_password;}
    }

    int ID() const{return p_ID;}
    QString user() const{return p_user;}
    QString password() const{return p_password;}

    void setID(const int &_ID){p_ID=_ID;}
    void setuser(const QString &_user){p_user=_user;}
    void setpassword(const QString &_password){p_password=_password;}
    };
QDataStream &operator<<(QDataStream &out,const Users &users);
QDataStream &operator>>(QDataStream &in,Users &users);

#endif // USERS_H
离线wq9706
只看该作者 3楼 发表于: 2011-05-06
为了网络传输方便,把类写成存在QDataStream中,大概这样子,
QDataStream &operator<<(QDataStream &out,const Users &users)
{
    out<<users.ID()
            <<users.user()
            <<users.password();
    return out;
}
这个没问题,但>>到int就有问题,
如果_ID也是QString就没问题
in >> _ID
            >>_user
            >>_password;
离线wxj120bw

只看该作者 4楼 发表于: 2011-05-12
引用第3楼wq9706于2011-05-06 21:25发表的  :
为了网络传输方便,把类写成存在QDataStream中,大概这样子,
QDataStream &operator<<(QDataStream &out,const Users &users)
{
    out<<users.ID()
            <<users.user()
.......

是编译出错的问题 能贴下吗
快速回复
限100 字节
 
上一个 下一个