Как правильно перегрузить операцию сложения для счетов(m_nID) ?
Как ее в main распознать(задействовать) ?
Код:
void operator + (CAccount f);
...
...
void CAccount::operator +(CAccount f)
{
CAccount tmp;
tmp.m_nID=m_nID+f.m_nID;
return tmp;
}
Весь код.
Код:
class CAccount
{
public:
CAccount();
~CAccount();
void InputData();
void OutputData();
void operator + (CAccount f);
int getSalary()
{
return m_nValue;
};
private:
int m_nID;
int m_nValue;
};
CAccount::CAccount():m_nID(-1),m_nValue(-1){}
CAccount::~CAccount(){}
void CAccount::InputData()
{
cout<<" Enter account ID:";
cin>>m_nID;
cout<<" Enter account value:";
cin>>m_nValue;
}
void CAccount::OutputData()
{
cout<<" account ID:" << m_nID <<" , Account Value: "<<m_nValue << endl;
}
class CClient
{
public:
CClient();
~CClient();
void InputData();
void OutputData();
friend int getSalary(CClient &client, char * line);
private:
char *m_szName; //имя клиента
CAccount *m_pAccounts; // счета данного клиента
int m_nAccountCount; //кол-во счетов
};
CClient::CClient()
{
m_nAccountCount=0;
m_pAccounts=NULL;
m_szName=NULL;
}
void CClient::InputData()
{
m_szName=new char[33];
cout<<" input name:"<<endl;
cin>>m_szName;
cout<<" input amount of values:"<<endl;
cin>>m_nAccountCount;
m_pAccounts=new CAccount[m_nAccountCount];
for(int i=0;i<m_nAccountCount;i++)
{
cout<<"enter["<<i<<"]account:"<<endl;
m_pAccounts[i].InputData();
}
}
void CClient::OutputData()
{
cout<<" name: "<<m_szName<<endl;
cout<<" accounts:"<<endl;
for(int i=0;i<m_nAccountCount;i++)
{
m_pAccounts[i].OutputData();
}
}
CClient::~CClient()
{
delete []m_pAccounts;
delete []m_szName;
}
int getSalary(CClient & client, char * line)
{
if(strcmp(line,client.m_szName))return 0;
int m_nValue = 0;
for(int i = 0; i<client.m_nAccountCount; i++)
m_nValue += client.m_pAccounts[i].getSalary();
return m_nValue;
}
class CBank
{
public:
CBank();
~CBank();
void InputData();
void OutputData();
void ShowSalary()
{
char line[22];
std::cout<<" input name:"<<std::endl;
std::cin>>line;
int m_nValue=0;
for(int i = 0; i<m_nClientCount; i++)
m_nValue += getSalary(m_pClients[i], line);
std::cout<<"\n"<<m_nValue<<std::endl;
}
private:
char *szName;
CClient *m_pClients;
int m_nClientCount;
};
CBank::CBank()
{
szName=NULL;
m_pClients=NULL;
m_nClientCount=0;
}
void CBank::InputData()
{
szName=new char [33];
cout<<" input bank name:"<<endl;
cin>>szName;
cout<<" sizeof:"<<endl;
cin>>m_nClientCount;
m_pClients=new CClient[m_nClientCount];
for(int i=0;i<m_nClientCount;i++)
{
m_pClients[i].InputData();
}
}
void CBank::OutputData()
{
cout<<"bank name: "<<szName<<endl;
for(int i=0;i<m_nClientCount;i++)
{
m_pClients[i].OutputData();
}
}
CBank::~CBank()
{
delete []m_pClients;
delete []szName;
}
void CAccount::operator +(CAccount f)
{
CAccount tmp;
tmp.m_nID=m_nID+f.m_nID;
return tmp;
}
void main()
{
CBank bank;
cout<<"---Reading bank information---"<<endl;
bank.InputData();
system("cls");
cout<<"---Reading bank information---"<<endl;
bank.OutputData();
bank.ShowSalary();
system("PAUSE");
}