概述:我正在尝试创建一个包含多个类的银行帐户程序(确切地说是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')
我做错了什么?
答案 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不是所需的行为,则可以调整特定行为。