如何使用重载>> c ++中的运算符

时间:2015-03-22 18:04:48

标签: c++ overloading operator-keyword

我正在阅读以下格式的用户信息文件:

1 David Davidson: 64 Zoo Lane
2 Homer Simpson: 123 Fake Street, Springfield
3 Craig Boone: Presidential Suite, Lucky 38, New Vegas

我想将这些信息存储在一个名为Borrower的类中,其中包含ID号,名称和地址字段,因此我已经超载了>>运算符如下:

istream& operator>>(istream& in, Borrower& b){
    in >> b.idNumber;
    std::getline(in, b.name, ':');
    in.ignore(1);
    in >> b.address;
    return in;
}

我尝试在main.cpp中使用它,如下所示:

ifstream fileUsers;
fileUsers.open("users.txt");
if (!fileUsers.is_open()){
    exit(EXIT_FAILURE);
}
Borrower b();
while (fileUsers.good()){
    fileUsers >> b;
    cout << b;
}

但是我为运营商&gt;&gt;&#39;带来了模糊的重载错误和&#39; Borrower()&#39; to&#39; std :: basic_istream ....&#39;而且我不知道该怎么做,请帮忙

1 个答案:

答案 0 :(得分:3)

此问题与重载operator>>没有任何关系。

错误的是你写道:

Borrower b();

但这是一个功能声明。

相反,写一下:

Borrower b;