在向量c ++中打印对象内的对象

时间:2015-01-24 14:52:13

标签: c++ visual-c++

我正在创建一个显示银行帐户的项目。我创建了一个类帐户和类人员 - 帐户持有余额,帐号和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();
}

我错过了什么?

1 个答案:

答案 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 )