gpt4 book ai didi

c++ - 在 vector C++ 中打印对象内的对象

转载 作者:行者123 更新时间:2023-11-28 06:28:24 28 4
gpt4 key购买 nike

我正在创建一个显示银行账户的项目。我创建了一个类 Account 和一个类 Person - Account 包含余额、帐号和一个 Person 对象,它具有名称和地址。我已经在一个 vector 中存储了三个 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) 假设 Person 对象具有字段名称和地址属性(可能是 std::string),这样做:

cout << accountVec[index].getAccountHolder().name;
cout << accountVec[index].getAccountHolder().address;

如果属性是私有(private)的,则向 Person 类提供 getname() 和 getaddress() 操作,然后访问它们。

cout << accountVec[index].getAccountHolder().getname();
cout << accountVec[index].getAccountHolder().getaddress();

2) 如果您有自己定义的类(类型),请为它们定义运算符<<。

 ostream &operator<<( ostream &output, const Person &D )
{
output << "Person.xxxx";
return output;
}

C++ 能够使用流插入运算符<<....输出内置数据类型。但是如果您使用自定义类型,ostream 和您定义的类(类型)是插入运算符涉及两种类型(操作数)...因此是签名

ostream &operator<<( ostream &output, const Person &D )

关于c++ - 在 vector C++ 中打印对象内的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126757/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com