Monika Dekster

Laboratorium 12. Smart pointers

Zadanie

Dana jest następująca definicja klasy Controller


class Controller {

    int Num;
    string Status;
    vector<weak_ptr<Controller>> others;

public:
    explicit Controller(const int i) { }
    ~Controller() { }
    void CheckStatus() const { }
};

Powyższa klasa opisuje sterownik, który musi komunikować się ze wszystkimi pozostałymi w celu sprawdzenia ich stanu. Komunikacja odbywa się za pomocą wskaźników w wektorze others (o długości o 1 mniejszej niż liczba sterowników).

Uzupełnij funkcje klasy. Konstruktor inicjalizuje pole Num na wartość zadaną parametrem i oraz pole Status na wartość "On". Destruktor wypisuje komunikat o zwolnieniu pamięci danego kontrolera. Funkcja CheckStatus(), iterując po wektorze others, sprawdza i wypisuje stan wszystkich pozostałych sterowników (poza aktualnym).

Funkcja main():

  1. wczytuje liczbę sterowników n
  2. tworzy n obiektów typu Controller i umieszcza wskaźniki do nich kolejno w wektorze typu shared_ptr<Controller>
  3. uzupełnia wektory others poszczególnych sterowników o wskaźniki do wszystkich pozostałych kontrolerów.
  4. dla każdego sterownika wywołuje funkcję CheckStatus