我正在尝试传递一个私有映射,该映射接受一个long类型和一个字符串类型,其中一个是学生id和一个学生姓名。我声明我的地图是这样的:
typedef map<long, string> Student;
我在传递给setter函数时遇到了问题,因为一旦我试图在这个函数中声明Student,我就无法访问映射方法。
理想情况下,我试图让这个set方法接受我从同一个类中声明的其他一些变量,并提供getter和setter方法。
void SetMap(long studentId, string studentname);
{
Student.insert(pair<long, string>(studentId, studentname);
}
此方法将被调用以从文件中获取值。
我知道我可能必须将Student
传递给参数,但我不知道如何声明这一点。
我也试图为get方法做同样的事情,但同样的问题也出现了。
一些建议会有很大的帮助,提前谢谢。
发布于 2019-05-28 19:58:47
您的Student
是一个类型(要映射的别名),而不是可以调用insert
的实例化。您应该修改您的类,使其包含此Student
类型的完整声明,如下所示:
typedef map<long, string> Student;
Student studentMap;
现在,您应该能够在地图的实例化studentMap
上调用insert
void SetMap(long studentId, string studentname);
{
studentMap.insert(pair<long, string>(studentId, studentname);
}
https://stackoverflow.com/questions/56349043
复制