我正在创建一个显示银行帐户的项目。我创建了一个类帐户和类人员 - 帐户持有余额,帐号和Person的对象,其中包含姓名和地址。我在向量中存储了三个Account对象,但无法弄清楚如何打印Person(即名称和地址)。以下是我的驱动程序中代码的一些片段:
#include <iostream>
#include <string>
#include <vector>
#include "Account.h"
#include "Person.h"
using namespace std;
// Creates Person object Drew with name "Drew" address "60 N Main"
Person Drew("Drew", "60 N Main");
// Create Account DrewAccount with account number 1, using Person Drew,
// and setting balance to 500.00
Account DrewAccount(1, Drew, 500.00);
// This is inside my printAccount function
int size = accountVec.size();
for (unsigned int index = 0; index < size; index++)
{
cout << accountVec[index].getAccountNum();
// This accountHolder is the Person object Drew and is giving me issues
// Gives Error:no operator "<<" matches these operands
// operand types are: std::ostream << Person
cout << accountVec[index].getAccountHolder();
cout << accountVec[index].getAccountBal();
}
我错过了什么?
答案 0 :(得分:1)
有两种方法:
1)假设Person对象具有字段名称和地址属性(可能是std :: string), 这样做:
cout << accountVec[index].getAccountHolder().name;
cout << accountVec[index].getAccountHolder().address;
如果属性是私有的,则向Person类提供getname()和getaddress()操作,然后访问它们。
cout << accountVec[index].getAccountHolder().getname();
cout << accountVec[index].getAccountHolder().getaddress();
2)如果您有自己定义的类(类型),请定义operator&lt;&lt;对他们来说。
ostream &operator<<( ostream &output, const Person &D )
{
output << "Person.xxxx";
return output;
}
C ++能够使用流插入运算符&lt;&lt; ....输出内置数据类型但是如果您使用自定义类型,则ostream和您定义的类(类型)是插入运算符中涉及的两种类型(操作数)...因此签名
ostream &operator<<( ostream &output, const Person &D )