'std :: string'没有名为'username'的成员错误

时间:2014-10-01 11:15:44

标签: c++ class stdstring

我的代码因为#std :: string'而无法编译。没有名为'用户名'错误。我使用code :: blocks。我猜这个问题是因为我试图将一个字符串分配给一个班级,有人可以帮忙吗?

#include <iostream>
#include <string>
using namespace std;

class userx
{
public:
    string username;
    string password;
};

int main()
{
    userx X, Y;

    X.username = "X";
    X.password = "1234";
    Y.username = "Y";
    Y.password = "5678";

    string a;
    string b;

    cout << "What is your name?" << endl;
    cin >> a;

    if (a.username == a)
    {
        cout << "What is your password?" << endl;
        cin >> b
        if (a.password == b)
        {
            cout << "Password Accepted" << endl;
        };
    };
};

3 个答案:

答案 0 :(得分:3)

当您可能需要a.usernameX.username时,您写了Y.username

答案 1 :(得分:2)

if(a.username == a)

因为astring所以它没有用户名作为其成员,可以使用点运算符访问

答案 2 :(得分:0)

您的代码说

if(a.username == a){
cout<<"What is your password?"<<endl;
cin>>b
if(a.password = b){
cout<<"Password Accepted"<<endl;
};

当您宣布string a;时,std::string确实没有username

也许您打算将输入的内容与X进行比较:

if(X.username == a){
  cout<<"What is your password?"<<endl;
cin>>b
if(X.password = b){
  cout<<"Password Accepted"<<endl;
};

也许你的意思是检查Y。 如果username错误,您可能想要考虑会发生什么。就目前而言,即使用户名错误,也会说密码已被接受。

修改 实际上if(X.password = b)是一项作业而非比较,因此无论用户名和密码如何,您的用户都可能会通过。

再次修改 听起来你想要的是在容器上使用std::find或使用std::map方法查看find是否包含给定密钥。有很多online clues