class Account 
  { 
    public: 
  Account(unsigned accNo, float balan=0.0); 
  unsigned AccountNo(); 
  float AcntBalan(); 
  static Account * First();  //账号链表首指针 
  Account * Next(); 
   
  void Display(); 
   
  virtual void Withdrawal(float amount)=0; //虚函数     protected: 
  static Account * pFirst; 
  Account * pNext; 
   
  unsigned acntNumber; 
  float balance; 
  }; Account::Account(unsigned accNo,float balan)
{
        acntNumber=accNo;
        balance=balan;
        pNext=0;
        count++;
        if(pFirst==0)
                pFirst=this;
        else
        {
                Account * pS=pFirst;
                for(;pS->pNext;pS=pS->pNext);
                pS->pNext=this;
        }
        pNext=0;
}
unsigned Account::AccountNo()
{
        return acntNumber;
}
float Account::AcntBalan()
{
        return balance;
}
Account * Account::First()
{
        return pFirst;
}
Account * Account::Next()
{
        return pNext;
}
int Account::NoAccounts()
{
        return count;
}
void Account:isplay()
{
        cout<<"Account number:"<<acntNumber
                <<"    balance:"<<balance<<endl;
}
void Account:esposit(float amount)
{
        balance+=amount;
}
void Account::Withdrawal(float amount)
{
        return;
}
//****************************************************************************
class Savings:public Account
{
        public:
                Savings(unsigned accNo,float balan=0.0);
                virtual void Withdrawal(float amount);
                void Display();
        protected:
                static float minbalance;
};
//****************************************************************************
float Savings::minbalance=500.0;
void Savings:isplay()
{
        cout<<"Savings number:"<<acntNumber
                <<"    balance:"<<balance
                <<"    minbalance:"<<minbalance<<endl;
}
Savings::Savings(unsigned accNo,float balan):Account(accNo,balan)
{
}
void Savings::Withdrawal(float amount)
{
        if(balance+minbalance<amount)
                cout<<"Insufficient funds:balance"<<balance
                        <<",withdramal"<<amount<<endl;
        else
                balance-=amount;
}
//****************************************************************************
enum REMIT{remitByPost,remitByCable,other};
class Checking:public Account
{
        public:
                Checking(unsigned accNo,float balan=0.0);
                virtual void Withdrawal(float amount);
                void SetRemit(REMIT re);
                void Display();
        protected:
                REMIT remittance;
};
//****************************************************************************
void Checking:isplay()
{
        cout<<"Checking number:"<<acntNumber
                <<"    balance:"<<balance
                <<"    remittance:"<<remittance<<endl;
}
Checking::Checking(unsigned accNo,float balan):Account(accNo,balan)
{
        remittance=other;
}
void Checking::Withdrawal(float amount)
{
        float temp=amount;
        if(remittance==remitByPost)
                temp=amount+30;
        else if(remittance==remitByCable)
                temp=amount+60;
        if(balance<temp)
                cout<<"Insufficient funds:balance"<<balance
                        <<"   ,withdrawal"<<temp<<endl;
        else
                balance-=temp;
}
void Checking::SetRemit(REMIT re)
{
        remittance=re;
}
//****************************************************************************
void main()
{
        Savings s0(0,0);
        Savings s1(12,123);
        Savings s2(123,123);
        Savings s3(124,123);
        Savings s4(125,123);
        Checking c0(0,0);
        Checking c1(12,123);
        Checking c2(123,123);
        Checking c3(124,123);
        Checking c4(125,123);        int i;
        cout<<"1---储蓄帐户    2---结算帐户";
        cout<<"            请选择帐户类型:";
        cin>>i;
        cout<<endl;
        
        Account *  p=c0.First();
 if (i==2)
{
            int j;
            cout<<"请选择交易方式:1---存款    2---取款  :";
            cin>>j;
            cout<<endl;
            if (j==2)
              {
                unsigned k;
                cout<<"请输入帐户号码:";
                cin>>k;
                for( ;(p!=NULL)&&(p->AccountNo()!=k);p=p->Next() );
                    if(p==NULL)
                      {
                          cout<<"该帐户不存在";
                          break;
                      }
 
                    else
                      {   //问题:这里指针p没有SetRemit方法,
                          p->SetRemit(remitByPost);
                          //这里也不会调用Checking类的Withdrawal方法,为什么呢?
                          p->Withdrawal(100)
}
请大家帮帮忙 , 谢谢!           }