Salve a tutti stavo sviluppando una classe, un esercizio semplice tratto da un libro di C++ che usiamo all'università.
Chiede di implementare la classe Address, formatat da civico, via, appartamente, città, stato e CAP. Ho buttato giù tutto, ho sviluppato la funzione print che lo stampa. Adesso chiede una particolare funzione. cito:
"Definire una funziona membro comes_before che stabilisca se un indirizzo viene prima o dopo un altro indirizzo, in base al codice postale di entrambi."
Per ora non son riuscito a trovare una soluzione sensata perchè non capisco come confrontare i 2 codici postali. Richiamare un qualsiasi elemento da "private" farà riferimento ad uno dei 2 indirizzi, ma non all'altro. Vi scrivo il codice e la non-funzionante soluzione che avevo "trovato".
codice:
#include <iostream>
#include <string>
using namespace std;
class Address
{
public:
Address(int civicn, string stre, string cit, string stat, int CAP);
Address(int civicn, string stre, int app_num, string cit, string stat, int CAP);
void print ();
int comes_before(Address f);
private:
int civic;
string street;
int appartment;
string city;
string state;
int PostalCode;
};
Address::Address(int civicn, string stre, string cit, string stat, int CAP)
{
civic=civicn;
street=stre;
city=cit;
state=stat;
PostalCode=CAP;
appartment=-1;
}
Address::Address(int civicn, string stre, int app_num, string cit, string stat, int CAP)
{
civic=civicn;
street=stre;
city=cit;
state=stat;
appartment=app_num;
PostalCode=CAP;
}
void Address::print ()
{
if (appartment=-1){
cout << endl << street << " n° " << civic << endl;
cout << PostalCode << " " << city << " " << state << endl;
}
else {
cout << endl << street << " n° " << civic << " Appartment " << appartment << endl;
cout << PostalCode << " " << city << " " << state << endl;
}
}
int Address::comes_before(Address f)
{
if (f.PostalCode > PostalCode)
{return f.PostalCode;}
return PostalCode;
}
Grazie in anticipo per le risposte