Witam, otóż mam mały problem, mianowicie mam klasę bazową, i dziedziczącą po niej klasę pochodną, i teraz muszę zrobić odczyt danych z plików tak, by mi zapisało również dane do klasy pochodnej.
już pokazuje, o co chodzi mi dokładniej:
class bazowa
{
public:
int a;
bazowa(){};
bazowa *nast;
friend istream& operator>>(istream&, bazowa&);
}
class pochodna:public bazowa
{
public:
int b;
pochodna():bazowa(){};
}
istream& operator>>(istream& ist, bazowa& baz)
{
ist>>baz.a;
ist>>baz.b;
return ist;
}
int main()
{
bazowa *wsk;
ifstream plik;
plik.open("test.txt");
wsk=new pochodna();
plik>>*wsk;
}
a to plik test.txt
1 5
2 6
Generalnie w istream, ist>>baz.b; nie chce się zrobić, gdyż (jak widać gołym okiem) klasa bazowa nie posiada atrybutu 'b'.
Tworzenie obiektu musi tak wyglądać, ponieważ później będzie więcej klas pochodnych, i będzie to lista(wsk=new pochodna(); wsk->nast=new pochodna2(); wsk=wsk->nast; itd). Może być parę pochodnych, ale one mają tworzyć właśnie listę(w ten sposób wcześniej na ćwiczeniach robiliśmy listy obiektowe, ale nie robiliśmy właśnie stream'a na klasy dziedziczące, tylko na bazowe).
Pozdrawiam, i z góry dzięki za odpowiedź.