Bandit
27-07-2012, 12:24
Ciao a tutti ragazzi
ho queste due classi Veicolo e Automobile che eredita in maniera pubblica da Veicolo le funzioni che vengono ridefinite in questa classe automobile.
E la funzione write_data deve scrivere le info su un file esterno.
Le classi hanno stringhe dinamiche.
Vi posto ciò che ho scritto per inquadrare il problema ma il vero mio dubbio è l'ultima finestra di codice.
#ifdedine veicoli_h_
#define veicoli_h_
#include <iostream>
#include<ostream>
#include <string>
using namespace std;
class Veicolo
{
private:
string *Marca;
string *Proprietario;
public:
Veicolo( string & mar, string &prop);
~Veicolo() {delete []Modello; delete []Proprietario};
virtual void print_data();
virtual void write_data();
};
class Automobile: public Veicolo
{
private:
string *Modello;
string *Targa;
int Cilindrata;
public:
Automobile(string & mar, string &prop , string &mod, string&tar, int cil = 0);
~Automobile() {delete []Modello; delete []Targa;};
virtual void print_data();
virtual void write_data()
}
#endif
vado ad implementare
include "veicoli.h"
Veicolo::Veicolo ( string & mar, string &prop)
{Marca = new string(mar);
Proprietario = new string (prop);}
Automobile::Automobile (string & mar, string &prop , string &mod, string&tar, int cil = 0)
{
Modello = new string(mod);
Targa = new string (tar);
Cilindrata=cil;
}
void Veicolo::print_data(){
cout<<"marca è =" <<Marca;
cout<<"proprietario è="<<Proprietario;}
void Automobile::printa_data(){
Veicolo::print_data();
cout<<"modello" <<Modello;
cout<<"targa"<<Targa;
cout<<"cilindrata"<<Cilindrata;
}
fin qui mi trovo alla perfezione l'ho postato solo per far inquadrare il problema.
Dovrei ora stampare su un file esterno le info, per esempio su testo.txt, tramite le funzioni write_data(). questo file di testo l'ho salvato dove, ho salvato questo codice.
Da quello che ho capito per stampare una cosa devo innanzitutto considerare una libreria di uscita tipo ostream o ofstream, andando ad includere nel codice come ho fatto all'inizio.
Poi devo assegnare uno stream al file che voglio usare (testo.txt)
quindi devo fare
void Veicolo::write_data(){
ostream fd; //fd è lo stream del file
fd.open ("testo.txt",ios::out|ios::app)
//in modo da poter scrivre sul file senza andar a cancellare le cose che scrivo
fd<<"Marca"<<Marca;
fd<<"Proprietario"<< Proprietario;
}
void Automobile::write_data()
{ Veicolo::write_data();
fd<<"Modello"<<Modello;
fd<<"targa"<<Targa;
fd<<"cilindrata"<<Cilindrata;
}
ho fatto bene?
che devo fare più per far scriveere le info su questo file esterno?
ho queste due classi Veicolo e Automobile che eredita in maniera pubblica da Veicolo le funzioni che vengono ridefinite in questa classe automobile.
E la funzione write_data deve scrivere le info su un file esterno.
Le classi hanno stringhe dinamiche.
Vi posto ciò che ho scritto per inquadrare il problema ma il vero mio dubbio è l'ultima finestra di codice.
#ifdedine veicoli_h_
#define veicoli_h_
#include <iostream>
#include<ostream>
#include <string>
using namespace std;
class Veicolo
{
private:
string *Marca;
string *Proprietario;
public:
Veicolo( string & mar, string &prop);
~Veicolo() {delete []Modello; delete []Proprietario};
virtual void print_data();
virtual void write_data();
};
class Automobile: public Veicolo
{
private:
string *Modello;
string *Targa;
int Cilindrata;
public:
Automobile(string & mar, string &prop , string &mod, string&tar, int cil = 0);
~Automobile() {delete []Modello; delete []Targa;};
virtual void print_data();
virtual void write_data()
}
#endif
vado ad implementare
include "veicoli.h"
Veicolo::Veicolo ( string & mar, string &prop)
{Marca = new string(mar);
Proprietario = new string (prop);}
Automobile::Automobile (string & mar, string &prop , string &mod, string&tar, int cil = 0)
{
Modello = new string(mod);
Targa = new string (tar);
Cilindrata=cil;
}
void Veicolo::print_data(){
cout<<"marca è =" <<Marca;
cout<<"proprietario è="<<Proprietario;}
void Automobile::printa_data(){
Veicolo::print_data();
cout<<"modello" <<Modello;
cout<<"targa"<<Targa;
cout<<"cilindrata"<<Cilindrata;
}
fin qui mi trovo alla perfezione l'ho postato solo per far inquadrare il problema.
Dovrei ora stampare su un file esterno le info, per esempio su testo.txt, tramite le funzioni write_data(). questo file di testo l'ho salvato dove, ho salvato questo codice.
Da quello che ho capito per stampare una cosa devo innanzitutto considerare una libreria di uscita tipo ostream o ofstream, andando ad includere nel codice come ho fatto all'inizio.
Poi devo assegnare uno stream al file che voglio usare (testo.txt)
quindi devo fare
void Veicolo::write_data(){
ostream fd; //fd è lo stream del file
fd.open ("testo.txt",ios::out|ios::app)
//in modo da poter scrivre sul file senza andar a cancellare le cose che scrivo
fd<<"Marca"<<Marca;
fd<<"Proprietario"<< Proprietario;
}
void Automobile::write_data()
{ Veicolo::write_data();
fd<<"Modello"<<Modello;
fd<<"targa"<<Targa;
fd<<"cilindrata"<<Cilindrata;
}
ho fatto bene?
che devo fare più per far scriveere le info su questo file esterno?