• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak zapisać funkcję zwracającą obiekt(c++)

42 Warsaw Coding Academy
0 głosów
2,179 wizyt
pytanie zadane 26 lutego 2016 w C i C++ przez luparuwka Początkujący (400 p.)
Od jakiegoś czasu uczę się sfmla. Chcę stworzyć funkcję, która zwraca obiekt. Nie wiem jak zapisać nagłówek funkcji i samo zwrócenie obiektu. Prosze o pomoc.

6 odpowiedzi

0 głosów
odpowiedź 26 lutego 2016 przez MetGang Nałogowiec (34,360 p.)

Tak samo jak przy całej reszcie... std::string przykładowo też jest obiektem...

sf::RectengleShape Foo()
{
    sf::RectengleShape Bar;
    // kod operujący na zmiennej
    return Bar;
}

 

0 głosów
odpowiedź 26 lutego 2016 przez jegor377 Stary wyjadacz (13,230 p.)
Obiekt * zwroc() { return new Obiekt(); } ? :D ew. Obiekt & zwroc() { return new Obiekt(); }
komentarz 26 lutego 2016 przez MetGang Nałogowiec (34,360 p.)
Taa... a potem dziwne, że po paru minutach działania programu, zaczyna brakować RAMu. Zresztą jak masz & to jeszcze trzeba zrobić dereferencję.
komentarz 26 lutego 2016 przez jegor377 Stary wyjadacz (13,230 p.)
gdzie widziałeś, żeby funkcja która zwraca ci np. pointer na bitmapę sama go dealokowała? :P
0 głosów
odpowiedź 26 lutego 2016 przez pietrzakacper Mądrala (7,480 p.)
Nagłówek funkcji wygląda tak:

typ_zwracany nazwa(argumenty)

W zależności od tego do czego potrzebujesz ten zwracany obiekt nagłówek dla funkcji zwracającej sf::Sprite będzie wyglądał tak:

sf::Sprite nazwaFunkcji()

lub sf::Sprite& nazwaFunkcji()  - jeśli potrzebujesz oryginalnego obiektu
0 głosów
odpowiedź 26 lutego 2016 przez luparuwka Początkujący (400 p.)
Wszystko działa, dziekuje bardzo za pomoc
0 głosów
odpowiedź 26 lutego 2016 przez DarkEliat Bywalec (2,810 p.)

Chyba to coś dla mnie :)

By funkcja mogła zwracać dane typy danych musi być takiego odpowiedniego typu.

Z tego co pamiętam to powinno to wyglądać tak: 

class Jakas_klasa
{
Image funkcja1();
Sprite funkcja2();
};

W pliku .cpp robisz:

Image Jakas_klasa::funkcja1()
{
Image plik;
return plik;
}

Sprite Jakas_klasa::funkcja2()
{
Sprite plik2;
return plik2;
}

Lecz mam dla ciebie jeszcze inną propozycje (jeśli to na górze nie zadziała):

int Jakas_klasa::funkcja3(Image &obiekt, Sprite &obiekt2)
{
//ładowanie obrazka
obiekt.LoadFromFile("sciezka");
//ustawianie obrazka
obiekt2.SetImage(obiekt);
}

I to wszytko. Dlaczego? Ponieważ do funkcji przekazujesz oryginał (&) :) Jeśli nie będzie coś działać to pisz. Pozdrawiam

0 głosów
odpowiedź 23 kwietnia 2017 przez Gankkah Użytkownik (720 p.)

Masz kod:

sf::<NAZWA KLASY> <NAZWA FUNKCJI>()
{
      sf::<NAZWA KLASY> <NAZWA OBIEKTU>;
             //operacje
      return <NAZWA OBIEKTU>;
}

W znaczkach < i > podaj nazwę klasy lub funkcji lub obiektu.

Podobne pytania

0 głosów
1 odpowiedź 259 wizyt
0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 5 grudnia 2021 w JavaScript przez TOWaD Mądrala (6,420 p.)
0 głosów
2 odpowiedzi 1,010 wizyt
pytanie zadane 13 maja 2020 w C i C++ przez Jakub Michalik Użytkownik (850 p.)

93,382 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,740 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...