我已经看到了很多错误,这里有很多问题,但现在我真的不知道该怎么办。
User.h
#ifndef USER_H
#define USER_H
#endif // USER_H
#include <iostream>
using namespace std;
class User
{
private:
struct Accounts {string user, password, name;} accounts[2];
void setAccounts();
public:
int Access(string user, string password);
bool online;
User();
~User();
};
User.cpp
#include "User.h"
#include <iostream>
User::User() {/* data */}
User::~User() {/* data */}
void User::setAccounts()
{
accounts[0].user = "user01";
accounts[0].password = "pw01";
accounts[0].name = "hi";
accounts[1].user = "user02";
accounts[1].password = "pw02";
accounts[1].name = "hi2";
}
int User::Access(string user, string password)
{
unsigned short int i;
for (int i = 0; i <= 1; i++)
{
if (user.compare(this->accounts[i].user) == 0 and password.compare(this->accounts[i].password) == 0)
return 0;
}
return 1;
}
我甚至使用了#pragma once
,但仍然没有认出这门课程。
我该怎么办?
@edit:我向下移动了#endif // USER_H
,现在该类已被识别,但构造函数方法仍然遗漏。
“错误:'User :: User()'”
的多个定义
答案 0 :(得分:1)
您应该将#endif // USER_H
放在头文件的末尾。只有#ifndef
和#endif
之间的内容才会受到多次保护。
#ifndef USER_H
#define USER_H
#include <iostream>
using namespace std;
class User
{
private:
struct Accounts {string user, password, name;} accounts[2];
void setAccounts();
public:
int Access(string user, string password);
bool online;
User();
~User();
};
#endif // USER_H
修改强>
您不应该包含User.cpp
。只应包含头文件。
答案 1 :(得分:0)
将#endif // USER_H
移到文件底部?