ciao a tutti,
ci tengo a precisare che il progetto è molto più grande, ma per farvi capire(essendo impossibilitato a postare tt il code) ho riassunto il problema in un esempio:
main.cpp
codice:
#include <iostream>
#include "classe1.h"
#include "classe2.h"
using namespace std;
int main()
{
x prova1;
y prova2;
prova1.creazionefile();
prova2.dati();
return 0;
}
classe1.h
codice:
#include <iostream>
#include <fstream>
using namespace std;
class x
{
public:
string aprifile;
void creazionefile()
{
cin >> aprifile;
aprifile=aprifile+".txt";
fstream nuovofile;
nuovofile.open(aprifile.c_str(),ios::out);
nuovofile << "Prima riga" <<endl;
nuovofile.close();
}
};
classe2.h
codice:
#include <iostream>
#include <fstream>
using namespace std;
class y : public x
{
public:
void dati()
{
fstream dato(aprifile.c_str(),ios::out|ios::app);
if(!dato)
{
cout << "Apertura non riuscita";
}
dato << "Seconda riga";
dato.close();
}
};
se compilate potrete notare che di problemi non ne da, tuttavia non fa il suo dovere in quanto si solleva l'eccezione di non riuscita dell'apertura del file(classe2).
A grandi linee è questo il problema..non mi spiego come sia possibile in quanto la classe è derivata e il dato nella classe base è di tipo public.
grazie