Zewnętrzne ustawienie zmiennej(statycznej?) klasy bazowej

0

Witam,

Mój problem polega na tym ze mam klasę X, która tworzona jest w klasie Engine(i tutaj musi zostać, nie może być również singletonem) i chce ustać w klasie bazowej Y wartosc wskaznika na X, tak aby wszystkie inne klasy po niej dziedziczące miały dostęp do tego wskaźnika(obiektow i klas bedzie sporo).

Pierwsza opcja która mi przychodzi na mysl to stworzenie w każdej klasie konstruktora przyjmującego wskaźnik na klasę X i ustawienie tej wartosci klasie bazowej. Nie do konca podoba mi sie to rozwiazanie, gdyz wszedzie musialbym o tym pamietac, a wskaznik i tak bedzie tylko jeden.
Druga opcja to stworzyc w klasie bazowej Y zmienna statyczna

class Y {
private:
  static X * ptr;

w pliku Cpp ustawić na nullptr, ale jak po stworzeniu klasy X ustawić ten wskaznik?
Trzecia opcja to kombinowanie z przyjaznia(friend) lecz tez do konca nie wiem jak.

Proszę o jakies sugestie.
Dziękuje i pozdrawiam

0

Nie rozumiem Twojego problemu. Nie mylisz czasem klasy z obiektem/instancją?

0
class Y
  {
   private:
   static X *ptr()
     {
      static X *ret=/* tu zainicjalizuj*/;
      return ret;
     }
  };
0

hmm, postaram się to lepiej wyjasnic.

Mam Klasę GameScreen, która odpowiadzialna jest za rysowanie wszystkich obiektow i tworzona ona jest w klasie Engine(tak jak klasa gui_core).
Nastepnie mam klase gui_core, w ktorej zajmuje sie rysowaniem obiektow gui.
Podstawowy obiekt Y musi miec wskaznika do GameScreen. Klasa Y jest klasa bazowa do roznego rodzaju klas. np button, window itp.
Teraz mam w ten sposob ze klasa gui_core przyjmuje w konstruktorze GameScreen* i w klasie gui_core tworze inne obiekty np. w pewnym momencie tworze klase window, ktora potrzebuje wskaznika do GameScreen wiec ponownie musze ja przekazac do klasy Window, a ona dopiero ustawia wskaznik. Mam takich klas kilka, wiec najprostsze rozwiazanie to za kazdym razem w konstruktorze podawac wskaznika do GameScreen co jest troche bezsensu. Wiec chcialbym(ale jak?) np. stworzyc pole statyczne w klasie Y (static GameScreen * gs). I chcialbym zeby po stworzeniu GameScreen ustawiona zostala zmienna dla wszystkich innych klas

1
class Window
  {
   private:
   GameScreen *Tworz_Obiekt_GameScreen()
     {
      GameScreen *gs;
      ...
      return obj;
     }
   public:
   static GameScreen *gs()
     {
      static GameScreen *ret=Tworz_Obiekt_GameScreen();
      return ret;
     }
  };

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