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
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.