如何设置和调用多个类的私有数据成员?

时间:2017-10-10 16:32:28

标签: c++ c++11 codeblocks bank

概述:我正在尝试创建一个包含多个类的银行帐户程序(确切地说是4个)。这是heirarchy -

  

银行

     
    

帐户帐户;

  
     

帐户

     
    

存款人depositor_info;

         

Int Account_number;

         

Double account_balance;

  
     

存款

     
    

名称depositor_name;

         

字符串社会安全号码;

  
     

名称

     
    

String first,last;

  

我可以设置存款人的姓名,然后将存款人分配到一个帐户。但是,我似乎无法打印存款人的名字。这是主要的测试代码:

Account test[MAX_ACCTS];

string first = "john", last = "doe", social = "132456789";
int acctNumber = 987654;
Name name;
Depositor depositor;

name.setFirst(first); // works
name.setLast(last); // works

depositor.setName(name);  // this works
depositor.setSSN(social); // this works

test[1].setDepositor(depositor); // this also works. 

cout << test[1].getDepositor(); // Here I get an error:
no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'Depositor')

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您需要为operator<<std::ostream&定义自定义Depositor const&重载作为参数。 C ++并不隐含地知道如何将对象转换为文本。

std::ostream & operator<<(std::ostream & out, Depositor const& depositor) {
    out << depositor.getName().getLast() << ", " << depositor.getName().getFirst();
    out << "; " << depositor.getSSN();
    return out;
}

显然,如果只是打印名称+ SSN不是所需的行为,则可以调整特定行为。