0

我一直在命令提示符下处理用户数据库。它允许您添加用户名和密码并登录。当我编译它时,我得到了错误no match for 'operator==' in。我不太确定是什么原因造成的。此外,我已将所有内容存储在一个类中。

我的头文件是:

#ifndef USER_PSW_H
#define USER_PSW_H
#include <string>


class User_Psw
{
    public:
        User_Psw();
        void addToDatabase();
        void getNameIndex();
        bool PasswordMatches();
        void UserCheck();
    protected:
    private:
        int sizeOfDatabase;
        int index;
        std::string Usernames;
        std::string Password;
        std::string username;
        std::string password;
};

#endif // USER_PSW_H

构造函数是:

User_Psw::User_Psw()
{
    const int SIZE = 100;
    index = 0;
    sizeOfDatabase = 0;
    Usernames[SIZE];
    Password[SIZE];
}

实际错误的函数是:

void User_Psw::getNameIndex()
{
    for(int i=0; i < sizeOfDatabase; i++)
    {
        if (username == Usernames[i])
        {
            index = i;
        }
    }
}

包含错误的实际代码行是if (username == Usernames[i])

如果需要,我还可以添加更多代码片段。

4

1 回答 1

2

这是行不通的,因为Usernames当您实际将类型定义为 std::string.

你想要这样的东西:

std::vector<std::string> Usernames;

然后你可以像这样访问它:

if (Usernames[i] == username) { // etc
于 2013-02-10T02:32:15.877 回答