Чтение ввода в векторные объекты

Привет, я пытаюсь прочитать данные в вектор объектов, но у меня возникли проблемы с этим. Я создал класс и вектор этого класса. Когда я пытаюсь прочитать данные в векторе, я получаю, что в классе банковских выписок нет члена, а затем переменные, в которых я пытаюсь прочитать.

#include <iostream>
#include<vector>
#include <string>

using namespace std;

class Bank_Statement
{
public:
Bank_Statement();
Bank_Statement(int d, double bal, string desc);

private:
string description;
double balance;
int day;
};

Bank_Statement::Bank_Statement(int d, double bal,  string desc)
{
description = desc;
balance = bal;
day = d
}

int main(){
Bank_Statement statement1;

cin >> statement1.d >> statement1.bal >> statement1.desc;

vector<Bank_Statement> user_statements;

int day_of_month;

for (day_of_month = 0, day_of_month < user_statements.size(); day_of_month++){
user_statements.push_back(statement1);
}

return 0;
}

0

Решение

Имена аргументов конструктора не являются членами данных класса. Когда вы сделали:

cin >> statement1.d >> statement1.bal >> statement1.desc;

Это неправильно, потому что это не члены, объявленные в классе. использование description, balance, а также day соответственно вместо.

2

Другие решения

Это даже не входит в цикл. Когда вектор создан, его размер равен нулю. Это означает, что выражение day_of_month < user_statements.size() (условие цикла) всегда будет ложным.

Вы должны прочитать вход в петля, что-то вроде

Bank_Statement statement;
std::vector<Bank_Statement> user_statements;

while (std::cin >> statement.d >> statement.bal >> statement.desc)
{
user_statements.push_back(statement);
}
0

Это из-за состояния day_of_month < user_statements.size(), Изначально вектор пуст и не удовлетворяет условию выполнения операции push_back для вектора.

0
По вопросам рекламы ammmcru@yandex.ru