我一直在命令提示符下处理用户数据库。它允许您添加用户名和密码并登录。当我编译它时,我收到错误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])
如果需要,我还可以添加更多代码段。
答案 0 :(得分:2)
这不起作用,因为当您实际将类型定义为Usernames
时,您正在像向量一样访问std::string
。
你想要这样的东西:
std::vector<std::string> Usernames;
然后您可以像访问它一样访问它:
if (Usernames[i] == username) { // etc