Dziedziczenie wielokrotne i konstruktory.

0

Piszę do Was z prośbą o wytłumaczenie mi jak mogę otrzymać wartość zmiennej(pola) zainicjowana przez konstruktor w klasie podstawowej, aby otrzymać ją w klasie pochodnej. Chodzi mi głownie, aby mogł korzystać z danej wartości pola w innych klasach pochodnych. Aha i zalezy mi, aby ta wartość mozna było modyfikować poprzez inne metody klas pochodnych. Pole, ktorego wartość chce modyfikować powinno być z dostepem protected.

0

Jak ma wyglądać hierarchia klas? Jakie są klasy, co po czym dziedziczy?

0

jezeli potrzebujesz pole ktore ma dostep do kazdego "dziecka" i jest jedyne w swoim rodzaju to pasuje tutaj static dla klasy bazowej... ale troche dziwne ze potrzebujesz cos takiego

0
class Baza
{
protected:
int x;
int y;
public:
Baza(int x,int y);
};
class Pochodna1: public Baza
{
...
};
class Pochodna 2: public Pochodna 1
{
...
};
class Pochodna 3 : public Pochodna 2
{
...
};

Chce powiedzmy wartosc x modyfikowac lub odczytywac w pochodnych klasach. Ano i musze sie obejsc bez zmiennej statycznej.

2

od tego są gettery i setery.

3

Po pierwsze nie ma tam żadnego dziedziczenia wielokrotnego. Ale domyślam się, że użyłeś tego określenia w potocznym znaczeniu.

Po drugie nie rozumiem problemu. Pole protected może być beztrosko modyfikowane przez metody klas pochodnych.

#include <iostream>
using namespace std;

class Baza
{
protected:
    int x;
    int y;
public:
    Baza(int x, int y) : x(x), y(y) {}
};

struct Pochodna1 : public Baza 
{
	Pochodna1(int x, int y) : Baza(x, y) {}	
};

struct Pochodna2 : public Pochodna1 
{
	Pochodna2(int x, int y) : Pochodna1(x, y) {}
};

struct Pochodna3 : public Pochodna2 
{
	Pochodna3(int x, int y) : Pochodna2(x, y) {}
	void ojtam() { x = y = -12; }
	void print() { cout << x << " " << y << endl; }
};

int main() 
{
	Pochodna3 foo(11, -1);
	foo.ojtam();
	foo.print();
	
	return 0;
}
0

Temat do zamknięcia.

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