c++ - 运算符>> 用 C++ 映射重载

标签 c++ class dictionary overloading operator-keyword

我做了一个类(class)学生

    class student
{
      private:
              string ID;
              string name;
              int age;
      public:
             ....
};

我想从用户那里获取值并将其放入 map 中,所以我创建了一个运算符>>重载

istream& operator>> (istream& in, student person){
    string newID;
    string newname;
    int newage;
    return in;
}

所以当它进入 cin 部分时

    student person;
    cin>>person;

当它把 person 添加到数据映射时,它会从默认构造函数而不是 cin 中调用值

怎么办?

最佳答案

运算符需要通过引用获取第二个参数:

istream& operator>>(istream& in, student& person) {
                                        ^ HERE

否则,您对 person 所做的更改永远不会超出 operator>>()

关于c++ - 运算符>> 用 C++ 映射重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13653007/

相关文章:

c++ - C/C++ 中字符的大小 ('a' )

asp.net - 如何在 Visio 中创建 Visual Studio 风格的类图?

class - (Javacard) APDU命令类错误测试 'Select File'

javascript - class 关键字在可汗学院编辑器中不起作用

带有 setter 的 C++ 类,它接受一个输入指针,稍后将值返回给该指针

c# - 使用 LINQ 从分隔字符串列表构建字典

c++ - 从构造函数C++返回后丢失成员变量的值

c++ - QML 和 C++ 之间的合适配置

c++ - 结构中带有类的链表无法使 bool 操作正常工作

java - 将 List<Product> 转换为 Map<Integer, List<Product>>