c++ - 如何传递私有(private) map 并输入数据

标签 c++

我正在尝试传递一个私有(private) map ,该 map 采用长字符串类型,其中一个是学生 ID 和学生姓名。我已经这样声明了我的 map :

typedef map<long, string> Student;

我在将其传递到 setter 函数时遇到问题,因为一旦我尝试在此函数中声明 Student,我就无法访问 map 方法。

理想情况下,我试图让这个 set 方法接受我从同一个类声明的其他一些变量,并提供 getter 和 setter 方法。

void SetMap(long studentId, string studentname);
{
    Student.insert(pair<long, string>(studentId, studentname);
}

将调用此方法以从文件中获取值。

我知道我可能必须将 Student 传递到参数中,但我不知道如何声明它。

我也尝试对 get 方法执行相同的操作,但出现了同样的问题。

一些建议会有很大帮助,提前致谢。

最佳答案

您的 Student 是一种类型(映射的别名),而不是您可以调用 insert 的实例。您应该修改您的类以包含此 Student 类型的完整声明,如下所示:

typedef map<long, string> Student;
Student studentMap;

现在,您应该能够在 map studentMap 的实例化上调用 insert:

void SetMap(long studentId, string studentname);
{
    studentMap.insert(pair<long, string>(studentId, studentname);
}

关于c++ - 如何传递私有(private) map 并输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56349043/

相关文章:

c++ - 哪些优化编译器开关使调试变得非常困难?

c++ - 定义一个深度/维度未知的 C++ 模板

c++ - 是否可以覆盖指向 C++ 中对象的指针的数组访问运算符?

c++ - OpenGL Programming Guild 第八版,示例程序和 'NumVAOs'

c++ - 模板类特化的模板方法

c++ - 具有固定值枚举器的枚举的零初始化

c++ - C++/FFMPEG 中的宏

c++ - 将进程的 IO 重定向到 Windows 套接字

c++ - 澄清 `this` 关键字

c++ - 为什么临时延长生命周期会导致多次调用析构函数?