2013-05-25 78 views
0

嗨,我试图读取数据到一个对象的矢量,但我有麻烦这样做。我创建了该类的类和向量。当我尝试读取数据到矢量中时,我得到班级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; 
} 

回答

0

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

你应该阅读输入循环,类似的,因为条件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

那。最初,vector是空的,并且不满足对vector执行push_back操作的条件。

2

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

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

这是不对的,因为这些不是在类中声明的成员。改为分别使用descriptionbalanceday

+2

你有部分权利,但它仍然无法正常工作,因为它们是私密的。 – chris

+0

这是正确的,但我认为创建构造函数并使用cin >> statement1.d >> statement1.bal >> statement1.desc;将允许我输入数据,但现在它说bank_statement没有memeber。我觉得我很困惑。 – user2420948