将输入读入Vector Objects

时间:2013-05-25 19:08:18

标签: c++ vector cin

您好我正在尝试将数据读入对象矢量但我无法这样做。我创建了一个类和该类的向量。当我尝试将数据读入向量时,我得到类Bank Statements没有成员,然后是我尝试读入的变量。

#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;
}

3 个答案:

答案 0 :(得分:2)

构造函数的参数名称不是该类的数据成员。当你这样做时:

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

这是不对的,因为那些不是在课堂上宣布的成员。分别使用descriptionbalanceday

答案 1 :(得分:0)

它甚至不进入循环。创建矢量时,其大小为零。这意味着表达式day_of_month < user_statements.size()(循环条件)将始终为false。

您应该在循环中读取输入,例如

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

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

答案 2 :(得分:0)

这是因为条件day_of_month < user_statements.size()。最初向量为空,不满足对向量执行push_back操作的条件。