我有一个名为students的地图,我希望存储另一个类的实例。我收到以下错误消息:
未在此范围内声明'学生'
std::map<int, Student> students;
以下是我的代码的相关部分:
APP.H
#include <iostream>
#include <string>
#include <map>
#include "student.h"
class App
{
public:
void AddStudent();
protected:
std::string SName;
std::string SEmail;
std::map<int, Student> students;
};
APP.CPP
#include <string>
#include <iostream>
#include "app.h"
#include "student.h"
void App::AddStudent()
{
std::cin >> SName;
std::cin >> SEmail;
Student Stu(SName, SEmail);
students.insert(std::make_pair(someID, Stu));
}
STUDENT.H
#include <string>
#include <iostream>
#include "app.h"
#include "test.h"
class Student
{
public:
Student() { }
Student(std::string studentName, std::string studentEmail);
int studentId;
std::string GetStudentName() const;
std::string GetStudentEmail() const;
void SetStudentName(std::string sn);
void SetStudentEmail(std::string se);
private:
static int tempId;
std::string studentName;
std::string studentEmail;
};
如果我将地图复制到main,我就不会收到此错误,但是当我尝试插入实例时,我无法访问它。我宁愿没有这张地图。
答案 0 :(得分:1)
student.h
包括app.h
,但app.h
包含student.h
。
在您的情况下,您只需从#include "app.h"
移除student.h
,因为不需要。{/ p>
答案 1 :(得分:0)
将我的评论作为答案:
做以下两件事:
无需在student.h
中加入app.cpp
,它已通过加入app.h
请勿在{{1}}
app.h
醇>