Dostęp do zmiennych nadrzędnego obiektu

0

Chcę zmienną obiektu nadrzędnego zmieniać w obiekcie potomnym tak, żeby inny obiekt potomny mógł odczytywać zmienioną wartość.
Jak to zrobić?

Używam do tego wskaźników, ale nie wygląda to dobrze. Wymaga sporo "pustego" kodu.

main.cpp

 dane  *jedane = new dane;

dane.h

 liczenie  *jedLiczenie = new liczenie;
netPobierz *walut = new netPobierz;
double test;

liczenie.cpp

void liczenie::przelicz() {
 // tutaj chcę coś przypisać do double test;
}

netpobierz.cpp


void netpobierz::przelicz() {
 // tutaj chcę odczytać double test;
}
0

Lepiej nie używaj zmiennych globalnych.

dane.h
extern double test;

main.cpp
#include "dane.h"
double test;

netpobierz.cpp
#include "dane.h"

0
_13th_Dragon napisał(a):

Lepiej nie używaj zmiennych globalnych.

Nie użyje. to zły pomysł, bo od tego jest klasa dane żeby przechowywała dane. poza tym jest tego więcej, nie chcę robić syfu.

Czy to dobry układ?:
dane - klasa która pobiera ostatnie dane z pliku na dysku i przechowuje wszystkie nowsze dane
- uaktywnia netPobierz po pobraniu i przygotowaniu danych z dysku
netPobierz - klasa która pobiera cyklicznie dane z różnych źródeł z neta
- wywołuje (cyklicznie) przelicz
przelicz - wylicza nowe dane na podstawie połączonych danych z pliku i pobranych z neta i zapisuje w klasie dane

0

Coś mi to:

 dane  *jedane = new dane;

ani też to:

liczenie  *jedLiczenie = new liczenie;
netPobierz *walut = new netPobierz;
double test;

Nie pasuje do tego co powiedziałeś wyżej.
C++ to nie Java i nie C# we wszystkich tych miejscach wystarczy: dane jedane; ale to nadal zmienne globalne.

0
_13th_Dragon napisał(a):

Coś mi to:

 dane  *jedane = new dane;

ani też to:

liczenie  *jedLiczenie = new liczenie;
netPobierz *walut = new netPobierz;
double test;

Nie pasuje do tego co powiedziałeś wyżej.
C++ to nie Java i nie C# we wszystkich tych miejscach wystarczy: dane jedane; ale to nadal zmienne globalne.

W JavaScripcie jest takie coś jak parent. Chciałbym coś podobnego.

Jak to nie pasuje? w dane jest tworzony obiekt typu liczenie i netPobierz i później netPobierz jest jednorazowo wywołany w konstruktorze jedane.
Później netPobierz robi swoje i wywołuje funkcje z klasy liczenie.

Aktualnie używam wskaźników do tych elementów:
np.:
jedLiczenie->walutNP = walut;
walut->uniLiczenie = jedLiczenie;

Niestety muszę użyć tego dosyć dużo. Wolałbym bez tego przypisywania wskaźników.

0
look997 napisał(a):

W JavaScripcie jest takie coś jak parent. Chciałbym coś podobnego.
W każdym środowisku graficznym jest odpowiednik.

look997 napisał(a):

Jak to nie pasuje? w dane jest tworzony obiekt typu liczenie i netPobierz i później netPobierz jest jednorazowo wywołany w konstruktorze jedane.
W dane.h ? Więc jest to zmienna globalna.

look997 napisał(a):

Wolałbym bez tego przypisywania wskaźników.
Poczytaj o klasach i singletonach.

0
_13th_Dragon napisał(a):
look997 napisał(a):

W JavaScripcie jest takie coś jak parent. Chciałbym coś podobnego.
W każdym środowisku graficznym jest odpowiednik.

look997 napisał(a):

Jak to nie pasuje? w dane jest tworzony obiekt typu liczenie i netPobierz i później netPobierz jest jednorazowo wywołany w konstruktorze jedane.
W dane.h ? Więc jest to zmienna globalna.

look997 napisał(a):

Wolałbym bez tego przypisywania wskaźników.
Poczytaj o klasach i singletonach.

Przeczytałem o singleton "Obiekt zostanie utworzony przy pierwszym wywołaniu tej metody i tylko wtedy nastąpi inicjalizacja przy pomocy konstruktora."
Dobre to. Tylko co dalej? jak tego użyć?

0

Napisać, to bardzo proste, z tym że musisz zacząć od podstaw.

0
_13th_Dragon napisał(a):

Napisać, to bardzo proste, z tym że musisz zacząć od podstaw.

Podstawy. To podaj dobry kurs który pokazuje jak posługiwać się obiektami utworzonymi w obiektach i ich relacjach i co tam jeszcze potrzebne jest do tak podstawowych działań.
Dlaczego obiektowość jest tak skonstruowana że wymaga najróżniejszych technik, żeby zrobić najbardziej podstawowe rzeczy?

0

Obiektami utworzonymi w innych obiektach posługujesz się tak samo jak zmiennymi typów podstawowych utworzonych w tymże obiekcie.
Jeżeli dla ciebie obiektowość wymaga najróżniejszych technik oznacza to że nie znasz podstaw.
Kiedy już rozumiesz podstawy to te wszystkie "techniki" - wymyślasz i modyfikujesz na bieżąco.

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