操作员重载以显示用户定义的数据类型

时间:2018-08-26 13:09:25

标签: c++ operator-overloading operators ostream

我正在研究结构,遇到了这个问题。

#include<iostream>
#include<string>
#include<vector>


using namespace std;

struct entry
{
    string name;
    int number;
};


int main()
{
    vector<entry> adres{{"Noname",212345},{"Yesname",7564745}};

    for(x:adres)
    {
        cout<<x<<endl;
    }

}

这只是一个测试代码!

因此,我创建了一个结构,并希望在我的载体中使用它。 C ++给了我这个错误

error: no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'entry')|

经过一番搜索,我发现我需要重载<<运算符以输出具有定义的数据类型的Vector。

我的问题是我该怎么做?如何重载“ <<”,以便输出向量。我知道运算符重载的概念,但这似乎太令人困惑了。 有什么办法可以使用“ <<”符号输出用户定义的类型?

1 个答案:

答案 0 :(得分:2)

您可以像这样重载<<运算符。

std::ostream& operator<<(std::ostream& out, const entry& e) {
    out << "Name: " << e.name << ", Number: " << e.number;
    return out;
}