在矢量 C++ 中打印对象内的对象
Print object within object in vector c++
我正在创建一个显示银行帐户的项目。我已经创建了一个 class 帐户和 class 个人 - 帐户拥有余额、帐号和具有名称和地址的个人对象。我已经在一个向量中存储了三个 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;
如果属性是私有的,则向 Person class 提供 getname() 和 getaddress() 操作,然后访问它们。
cout << accountVec[index].getAccountHolder().getname();
cout << accountVec[index].getAccountHolder().getaddress();
2) 如果您有自己定义的 classes(types),请为它们定义运算符 <<。
ostream &operator<<( ostream &output, const Person &D )
{
output << "Person.xxxx";
return output;
}
C++ 能够使用流插入运算符 <<.... =26=](type) 是插入运算符中涉及的两种类型(操作数)...因此签名
ostream &operator<<( ostream &output, const Person &D )
我正在创建一个显示银行帐户的项目。我已经创建了一个 class 帐户和 class 个人 - 帐户拥有余额、帐号和具有名称和地址的个人对象。我已经在一个向量中存储了三个 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;
如果属性是私有的,则向 Person class 提供 getname() 和 getaddress() 操作,然后访问它们。
cout << accountVec[index].getAccountHolder().getname();
cout << accountVec[index].getAccountHolder().getaddress();
2) 如果您有自己定义的 classes(types),请为它们定义运算符 <<。
ostream &operator<<( ostream &output, const Person &D )
{
output << "Person.xxxx";
return output;
}
C++ 能够使用流插入运算符 <<.... =26=](type) 是插入运算符中涉及的两种类型(操作数)...因此签名
ostream &operator<<( ostream &output, const Person &D )