【发布时间】:2016-09-02 00:44:01
【问题描述】:
这个错误我见多了,这里有很多关于它的问题,但现在我真的不知道该怎么办。
用户.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();
};
用户.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()'的多个定义”
【问题讨论】:
-
你的包含守卫确实......好吧......什么都没有。
-
#pragma once 应该没问题,如果你去掉 #if .. #endif 守卫
-
假设 #pragma once 被放置在正确的位置 :-)
标签: c++ error-handling include-guards