Ciao, io ho pensato allora ad una cosa del genere:
classe
#ifndef __CMACCHINA__
#define __CMACCHINA__
#include <string>
#include <iostream>
using namespace std;
#define MAX 10
class Macchina
{
private:
string tipo;
string anno_produzione;
string marca;
Macchina* berlina[MAX];
Macchina* statwagon[MAX];
Macchina* spider[MAX];
public:
Macchina(string Tipo, string Anno_Produzione, string Marca);
~Macchina();
int Set_New_Car(string Tipo,string Anno_Produzione,string Marca);
void print();
};
#endif
#include "csample.h"
int i=0,y=0,z=0, contatore=0; //i è l'indice dell'array berlina, yè l'indice dell'array spider, z è l'indice dell'array station_wagon
string ToUpper(string s);
Macchina::~Macchina()
{
}
Macchina::Macchina(std::string Tipo, std::string Anno_Produzione, std::string Marca)
{
tipo = ToUpper(Tipo);
marca=Marca;
anno_produzione=Anno_Produzione;
/*
la prima volta insrisce l'oggetto nell'array
*/
if (contatore==0)
{
contatore++;
Set_New_Car(tipo,anno_produzione,marca);
}
}
int Macchina::Set_New_Car(std::string Tipo, std::string Anno_Produzione, std::string Marca)
{
/*
Inserisce la macchina nell'array basandosi sul tipo di macchina.
*/
Tipo=ToUpper(Tipo);
if (i>=MAX) return -1;
if(Tipo=="BERLINA")
berlina[i++]=new Macchina(Tipo,Anno_Produzione,Marca);
else if(Tipo=="SPIDER")
spider[y++]=new Macchina(Tipo,Anno_Produzione,Marca);
else if(Tipo=="STATION_WAGON")
statwagon[z++]=new Macchina(Tipo,Anno_Produzione,Marca);
}
string ToUpper(string s)
{
/*
restituisce la stringa di input convertita in minuscolo
*/
for(unsigned int j=0;j<s.length();j++)
s[j]= toupper (s[j]);
return s;
}
void Macchina::print()
{
/*
stampa le marche delle macchine dei rispettivi array
*/
cout <<"Le macchine del gruppo berlina"<< endl;
for(int j=0;j<i;j++)
cout <<berlina[j]->marca<<endl;
cout <<"Le macchine del gruppo Station Wagon"<< endl;
for(int j=0;j<z;j++)
cout <<statwagon[j]->marca<<endl;
cout <<"Le macchine del gruppo Spider"<< endl;
for(int j=0;j<y;j++)
cout <<spider[j]->marca<<endl;
}
la funzione print() stampa le marche di tutte le auto ordinandole per tipo.
Set_New_Car inserisce una nuova macchina nell'array del tipo corrispodente.