Tablica obiektów, odwołanie się do metody klasy pochodnej.

0

Przy założeniu, ze kod wygląda tak:

#include <iostream>
#include <string>
using namespace std;

class Bazowa {
private:
	string x;
public:
	Bazowa ();
	Bazowa (string x):
		x(x)
	{}
	string getX() const { return x;}
	void setX(string x) {this->x=x;}
};

class Pochodna :public Bazowa{
private:
	string y;
public:
	Pochodna();
	Pochodna(string x, string y):
		Bazowa(x),
		y(y)
	{}
	string getY() const { return x;}
	void setY(string x) {this->x=x;}
};

int main(){

Bazowa **tab = new Bazowa*[1]

tab[0] = new Pochodna ("x","y")
tab[0]->setY("new Y"); 			// [ERROR] 'class Bazowa' has no member named 'setY'

return 0;
}

Czy w takim wypadku jest sposób aby zmienić wartość klasy pochodnej, chociaż tablica jest obiektów klasy bazowej?

0

To co robisz lamie zasade Liskov.

Co potrzebujesz osiagnac? Wydaje mi sie ze jest to problem XY
Po co potrzebujesz takiej dziwnej konstrukcji?

0

@fasadin: Potrzebuję zrobić bibliotekę. Chciałbym z 'klientem' powiązać po prostu tablice jego wypożyczeń, aby później przerzucić to szybko do pliku.
Edit.
Są tam po prostu ksiazki, filmy, czasopisma.
Wszystko dziedziczy z klasy Materiały.
Mogę to raczej ominąć, bo raz zdefiniowanej ksiazki nie bede usuwał, ale po prostu ciekawość.

1
class bibloteka
{
  ksiazkiNaStanie[]
}

class ksiazka
{
  id, tytul, rokwydania
}

class klientBibloteki
{
  wypozyczoneKsiazki[]
}

class biblotekarz
{
SprawdzCzyMoznaWypozyczyc(tytul);
Wypozcz(tytul)
Przyjmij(ksiazka)
ZaktualizujBiblotekeOStanFaktyczny()
}

cos na takiej zasadzie, wiec biblotekarz Ci sie zajmuje wypozyczaniem i oddawaniem. Nie ma tu potrzeby dziedziczenia

0

Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1