运算符重载以显示用户定义的数据类型
Operator Overloading to display User defined data types
我在研究结构,遇到了这个问题。
#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。
我的问题是我该怎么做?我怎样才能重载“<<”以便我可以输出我的矢量。我知道运算符重载的概念,但这个概念似乎太令人困惑了。
有什么方法可以只使用“<<”符号来输出用户定义的类型吗?
您可以像这样重载 <<
运算符。
std::ostream& operator<<(std::ostream& out, const entry& e) {
out << "Name: " << e.name << ", Number: " << e.number;
return out;
}
我在研究结构,遇到了这个问题。
#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。
我的问题是我该怎么做?我怎样才能重载“<<”以便我可以输出我的矢量。我知道运算符重载的概念,但这个概念似乎太令人困惑了。 有什么方法可以只使用“<<”符号来输出用户定义的类型吗?
您可以像这样重载 <<
运算符。
std::ostream& operator<<(std::ostream& out, const entry& e) {
out << "Name: " << e.name << ", Number: " << e.number;
return out;
}