1 c++
我对 C++ 相当陌生,正在开始我的主要大学项目。到目前为止一切都很顺利,但是我遇到了这个问题,经过几个小时的网络搜索后我仍然一无所知。
Portfolio::displayAccounts()当我尝试循环遍历向量以显示向量内的每个元素时,就会出现问题。
它不允许我使用std::cout <<我一直用于数组之类的东西的典型值。
任何帮助将不胜感激。
#include <vector>
#include "Account.h"
class Portfolio
{
private:
std::vector<Account> accounts;
public:
double calculateNetWorth();
Portfolio();
void addAccount(std::string name, double balance);
void displayAccounts();
};
Run Code Online (Sandbox Code Playgroud)
#include "Account.h"
double Account::getBalance() {
return balance;
}
Account::Account(std::string name, double balance){
this->name = name;
this->balance = balance;
}
Run Code Online (Sandbox Code Playgroud)
#include <string>
class Account
{
private:
std::string name;
double balance;
public:
double getBalance();
Account(std::string name, double balance);
};
Run Code Online (Sandbox Code Playgroud)
#include <iostream>
#include <string>
double Portfolio::calculateNetWorth() {
double total = 0;
for (auto& account : accounts) {
total += account.getBalance();
}
return total;
}
Portfolio::Portfolio() {
}
void Portfolio::addAccount(std::string name, double balance) {
std::cout << "Account Name: ";
std::cin >> name;
std::cout << "Account Balance: ";
std::cin >> balance;
Account account = Account(name, balance);
accounts.push_back(account);
}
void Portfolio::displayAccounts() {
std::cout << "nThe vector elements after push back are: ";
for (int i = 0; i < accounts.size(); i++) {
std::cout << accounts[i] << " ";
}
}
Run Code Online (Sandbox Code Playgroud)
Account标准库不知道应该如何输出类的实例。为了能够写这样的东西:
std::cout << some_account;
Run Code Online (Sandbox Code Playgroud)
您需要重载该<<运算符,例如如下所示:
class Account
{
private:
std::string name;
double balance;
public:
double getBalance();
Account(std::string name, double balance);
// add this so the overloaded << operator can access your private members
friend std::ostream& operator<<(std::ostream& os, const Account& o);
};
// Implementation
std::ostream& operator<<(std::ostream& os, const Account& a)
{
os << "Name: " << a.name << " Balance: " << a.balance << "\n";
return os;
}
Run Code Online (Sandbox Code Playgroud)
例如将打印类似这样的内容Account:
Name: SomeName Balance: 123.45678
奖金:
如果你使用 C++11,你可以这样写:
for (auto & account : accounts)
std::cout << account << " ";
Run Code Online (Sandbox Code Playgroud)
代替:
for (int i = 0; i < accounts.size(); i++) {
std::cout << accounts[i] << " ";
Run Code Online (Sandbox Code Playgroud)