我有一個名爲學生的地圖,我想存儲另一個類的實例。我收到以下錯誤信息:對象沒有在範圍內聲明(std :: map)
'學生' 並沒有在此範圍
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;
};
如果複製我的地圖主,我沒有收到此錯誤,但後來當我嘗試插入情況下,我不能訪問它。我寧願沒有這張地圖。
'學生'定義在哪裏? – Dan
你能提供'student.h'嗎? – Ap31
學生是一個單獨的類,接受兩個std :: string參數,這些參數存儲在私有變量中,包含setter和getters。我不想在這裏複製所有的代碼。 –