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