Привет, я пытаюсь прочитать данные в вектор объектов, но у меня возникли проблемы с этим. Я создал класс и вектор этого класса. Когда я пытаюсь прочитать данные в векторе, я получаю, что в классе банковских выписок нет члена, а затем переменные, в которых я пытаюсь прочитать.
#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;
}
Имена аргументов конструктора не являются членами данных класса. Когда вы сделали:
cin >> statement1.d >> statement1.bal >> statement1.desc;
Это неправильно, потому что это не члены, объявленные в классе. использование description
, balance
, а также day
соответственно вместо.
Это даже не входит в цикл. Когда вектор создан, его размер равен нулю. Это означает, что выражение 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);
}
Это из-за состояния day_of_month < user_statements.size()
, Изначально вектор пуст и не удовлетворяет условию выполнения операции push_back для вектора.