使用变量声明对象的名称

时间:2015-03-02 21:07:59

标签: c++ class object

所以我试图从用户那里获得输入,然后将我的类客户的对象命名为与用户的输入相同。当我这样做时,我收到错误

  

" main.cpp:在函数'void getinfo(String)'中:main.cpp:34:13:错误:   “客户x”的声明会影响参数客户   x(名字,姓氏,帐号,pinnum,余额,accthist);

我需要一种方法来自动定制类的名称,可以通过可以修改的已分配变量或通过用户输入来自定义。

*****更新****** 我确实想要直截了当。这是一个学校项目,意在由两三个人共同完成,我现在正在独自完成。以下是作业的链接。我包括这个以防万一有人可能有更好的方式来使用我的代码或更好的方法来解决我正在努力解决的问题。

assignemnt

void getinfo(string x){
//----------Variable Declarations--------------

    string firstname;
    string lastname;
    string account;
    int pinnum;
    double balance;
    vector <int> accthist;  


//----------Get Last Name----------------------------
    cout<<"Please enter your last name\n";
    cin>>lastname;
//----------Get First Name----------------------------
    cout<<"Please enter your first name\n";
    cin>>firstname;
//----------Get Account Number----------------------------
    cout<<"Please enter your desired account number\n";
    cin>>account;
//----------Get Pin Number----------------------------
    cout<<"Please enter your desired pin number\n";
    cin>>pinnum;
//----------Get First Deposit of $1,000.00--------------
    cout<<"Please enter your desired balance\n";
    cin>>balance;   

//----------create customer----------------------------
    customer x(firstname, lastname, account, pinnum, balance, accthist);
}



int main(){
    int choice;
    cout<<"\t\t Please enter the number corresponding to your selected action.\n\n";
    cout<<"1) Open a New Account (Minimum $1,000.00 Deposit)\t"<<"2) Close an Existing Account\n";
    cout<<"3) Make a Withdraw ($50.00 -$500.00)\t\t\t"<<"4) Make a Deposit\n";
    cout<<"5)Check Account Balance\t\t\t\t\t"<<"6) Bank Statistics Menu\n";
    cin>>choice;

    if (choice == 1){
        string test;
        cout<<"Please enter your first name";
        cin>>test;
        getinfo(test);

    }
    /*if (choice == 2){

    }
    if (choice == 3){

    }
    if (choice == 4){

    }
    if (choice == 5){

    }
    if (choice == 6){

    }
    */else cout<<"Oops!";
return 0;
}

HEADER FILE- functions.h

#include "std_lib_facilities_4.h"

//---------------------------------------------------------------------
class customer{
    private:
        string firstn;
        string lastn;
        string acct;
        int pin;
        double bal;
        vector <int> lastten;

    public:
    customer(string t1,string t2,string t3, int t4, double t5, vector <int> t6);
    void deposit(double n){};
    void withdraw (double n){};
    double get_bal(){};

};
//---------------------------------------------------------------------
class stats{
    double avg_bal();       //average balance
    double total_deposits();        //sum of all account balances
    int total_cust();   //total number of customers
};
//---------------------------------------------------------------------
class bank{
    private:
        vector <string> allcust;

    public:
        void display_cust_account();
        bool verify_cust();
        void create_new_acct(string temp);
        void check_maintenance_fee();
        void read_cust_accounts_from_file();
        void save_cust_account_to_file();
        void make_backup_file();
        void print_stats();
};

2 个答案:

答案 0 :(得分:1)

  

&#34; main.cpp:在函数'void getinfo(String)'中:main.cpp:34:13:错误:声明'customer x'会影响参数customer x(firstname,lastname,account,pinnum) ,平衡,accthist);

无论您希望使用此代码实现什么(我严重怀疑在修复该简单错误后它是否有任何意义),错误消息的内容非常明显:

customer x(firstname, lastname, account, pinnum, balance, accthist);
      // ^

上面一行中的变量名x与用于函数参数的变量名void getinfo(string x){ // ^ 相同

customer y(firstname, lastname, account, pinnum, balance, accthist);
      // ^

shadowing 在这种情况下实际意味着什么。


因此,要解决此问题,请为其中任何一个选择其他名称,例如

void getinfo(string y){
                 // ^

{{1}}

答案 1 :(得分:0)

我建议您将getInfo函数移动到customer类中的方法。

class Customer
{
    string firstname;
    string lastname;
    string account;
    int pinnum;
    double balance;
    vector <int> accthist;  
  public:
    void getInfo(void);
};

void Customer::getInfo()
{
//----------Get Last Name----------------------------
    cout<<"Please enter your last name\n";
    cin>>lastname;
//----------Get First Name----------------------------
    cout<<"Please enter your first name\n";
    cin>>firstname;
//----------Get Account Number----------------------------
    cout<<"Please enter your desired account number\n";
    cin>>account;
//----------Get Pin Number----------------------------
    cout<<"Please enter your desired pin number\n";
    cin>>pinnum;
//----------Get First Deposit of $1,000.00--------------
    cout<<"Please enter your desired balance\n";
    cin>>balance;   
}

int main(void)
{
  Customer person;

  // Print prompt and get the customer information.
  person.getInfo();

  //...
  return EXIT_SUCCESS;
}