Inicjalizacja wartośći w klasie używając metody z innej klasy

0

Mam taki problem, mam jedną klasę

class window
{
	private:
		
	public:

		SDL_Surface* load_image( std::string filename );

};
 

i drugą

 
class stain
{
	private:
		
	public:

		SDL_Surface* oil;

};

Teraz używając metody window::load_image chcę załadować konkrenty plik do stain::SDL_Surface* oil, tak jakby było to zdefiniowane w konstruktorze i każdy obiekt tej klasy miałby już własny oil = load_image("obrazek") kiedy zostanie utworzony, tylko nie mam pojęcia jak się odnieść do metody w innej klasie i gdzie umieścić tą instrukcję jak już będe wiedział, w konstruktorze? Jeśli nie, to gdzie?

0

Moim zdaniem potrzebujesz jakiejs dodatkowej klasy do operowania na obrazkach. Ta klasa bedzie menadzerem zasobow programu i bedziesz mogl zwolnic pozniej wszystko latwo dzieki niej. :)

0

stain musi albo mieć referencję do instancji typu window lub musi sobie obiekt typu window utworzyć, aby móc użyć metody load_image
W konstruktorze stain możesz podać filename, które zostanie użyte do załadowania odpowiedniego obrazka.
Metoda load_image może być statyczna, jeśli jej zadanim jest załadowanie tylko obrazka i zwrócenie SDL_Surface* bez konieczności użycia innych zasobów klasy window, lub nawet może być prywatną metodą stain. Ciężko powiedzieć po tak małej ilości kodu.
Jeśli stain ma być klasą bazową dla jakiś innych, to najlepiej aby konstruktor bazowy realizował wczytanie obrazka lub możesz wykorzystać wzorce: metoda szablonowa lub strategia.

0

Dzięki chłopaki, chodziło mi o zwykłe

class A
{
      B b;
      img = b.f();
}
 

Jednak tworzenie nowego obiektu wydało mi się... niepotrzebne, po prostu skopiowałem tą metodę.

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