Chyba dziedziczenie?

0

Cześć, korzystam z biblioteki i klas w niej.

W własnej klasie wlasna tworzę obiekt klasy (BIB) z biblioteki, np.

wlasna.h

class wlasna
{
public: 
BIB obiekt_biblioteki;
}

Potem w wlasna.cpp może być w konstruktorze:

wlasna::wlasna()
{
obiekt_biblioteki.METODA_BIBLIOTEKI();
}

Chciałbym teraz uzyskać takie coś, że:
dodaję w pliku h:

public: int a;
void setA(int b);

A w pliku cpp do konstruktora chciałbym móc dodać coś takiego:

obiekt_biblioteki.setA(liczba);

Czyli tak jakby dodać nowe pole i nową metodę do tej klasy z biblioteki, tak, żeby obiekty z niej posiadały jeszcze wartość w typu polu a.
Jak takie coś osiągnać?

0

Pytasz się o to jak zmienić biblioteke. Normalnie dopisujesz. O ile masz kod zródłowy i chcesz to rekompilować (pewnie nie chcesz jeśli to nie Twoja biblioteka).

0

Ale czy właśnie jestem w stanie właśnie zrobić to, bez modyfikowania oryginalnej treści biblioteki. Jeśli dobrze rozumiem, to mogę stworzyć klasę, która będzie dziedziczyć po klasie z tej biblioteki i w tej mojej, która dziedziczy mogę utworzyć metody i później zamiast tworzyć obiekt oryginalnej klasy to mogę stworzyć obiekt tej, która dziedziczy, ale czy nie mogę tego osiągnąć jakoś inaczej, bo trochę bez sensu tworzyć nową klasę tylko po to, żeby dodać w niej jedną metodę.

2

To troche stąpanie po cienkim lodzie. Po pierwsze zobacz czy ta klasa z biblioteki ma virtualny destruktor jeśli sie tak uparłeś na to. Ale ja bym chyba to tak zrobił:

struct klasa_z_biblioteki_helper {
   BIB obiekt_z_biblioteki;
   int a;
   void setA (int newA) { a = newA; }
};

i używał tego zamiast obiekt_z_biblioteki. Słowem - nie dziedziczenie, a kompozycja.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.