静态成员类的初始化问题
//4-ATM.cpp
//simulait ATM system
#include<iostream>
#include<cstring>
using namespace std;
const unsigned long long USERAMOUNT=2;
const unsigned USERNAMELENGTH=64+1,PASSWORDLENGTH=6+1;
class user
{
private:
char username[USERNAMELENGTH];
char password[PASSWORDLENGTH];
long double deposit;
public:
user():deposit(0){}
user(char * tmpUsername,char * tmpPassword,long double tmpDeposit):deposit(tmpDeposit)
{
strcpy(username,tmpUsername);
strcpy(password,tmpPassword);
}
///////////
};
class ATM
{
private:
bool isLogin;
static user users[USERAMOUNT];//class member needed to be initialized.
user * currentUser;
user * targetUser;
public:
//static int initusers();
ATM():isLogin(false),currentUser(NULL),targetUser(NULL){}
};
int main()
{
ATM atm0;
while(!atm0.login())
{
atm0.login();
while(atm0.login())
{
cout<<"1, Withdraw\n"<<
"2, Deposit\n"<<
"3, Show Deposit\n"<<
"4, Transfer\n"<<
"5, Change Password\n"<<
"0, Log off\n"<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1: atm0.withdraw();break;
case 2: atm0.deposit();break;
case 3: atm0.showDeposit();break;
case 4: atm0.transfer();break;
case 5: atm0.changePassword();break;
case 0: atm0.logoff();break;
}
}
}
return 0;
}
int ATM::initusers()
{
for(int i=0; i<USERAMOUNT; i++)
{
ATM::users[i].user();
}
}
[解决办法]
class ATM
{
private:
bool isLogin;
static user users[USERAMOUNT];//class member needed to be initialized.
user * currentUser;
user * targetUser;
public:
//static int initusers();
ATM():isLogin(false),currentUser(NULL),targetUser(NULL){}
};
user ATM::users[USERAMOUNT];//在类外声明一下。。