Wpis z mikrobloga

#programowanie #cpp
jak w środku struktury przekazać do funkcji własną referencję?

struct Complex {
double real, imaginary;

Complex add(Complex &a) {
Complex newComplex = { 0, 0 };
newComplex = this + a;
return newComplex;
}

};

zamiast this które jest wskaźnikiem chciałbym tam wrzucić referencję

also, how do i wykop? nie umiem tu poprawnie wrzucic kodu, sory
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@gangstaindesign: po pierwsze czy masz zrobionego maina ?
po drugie - daj to do jednej klasy a nie baw sie w struktury. metody zadeklaruj w klasie (operatory też!), a jak chcesz metody definiować to uzyj operatora zakresu np. MojaKlasa::MojaMetoda(int x) {}
  • Odpowiedz
po drugie - daj to do jednej klasy a nie baw sie w struktury. metody zadeklaruj w klasie (operatory też!), a jak chcesz metody definiować to uzyj operatora zakresu np. MojaKlasa::MojaMetoda(int x) {}


@anonimowy_anonim: nie znam się, to się wypowiem
  • Odpowiedz
@kuhar: niestety ale w poleceniu mam tak :/

w pierwszej funkcja zwraca wskaznik do nowoutworzonego elementu tego typu


pojawił sie teraz tez taki problem, że po
Complex *c = a.add(b);
a przyjmuje wartość c, a powinna zostać tamta stara.
  • Odpowiedz
@kuhar: dobra, jutro sie tym pobawie sam na spokojnie, dzieki za pomoc :)

a chce wskaźnik bo mam wyraźnie w poleceniu zadania napisane, ze funkcja add ma zwrócić wskaźnik do nowopowstałego obiektu
  • Odpowiedz
@gangstaindesign: wszystko fajnie, tylko jak zwrócisz surowy wskaźnik, to jak użytkownik ma wiedzieć czym go zaalokowałeś i kiedy ma zwolnić pamięć? Masz jakieś złe polecenie chyba...
Jak bardzo chcesz, to najrozsądniej będzie zwrócić std::unique_ptr przez std::make_unique.
  • Odpowiedz
@gangstaindesign: Ok, więc jesteś Javowcem, więc należy Ci się wyjaśnienie (a raczej przypomnienie, bo Javowcy o tym zapominają): w Javie prawie wszystko jest przekazywane przez wskaźnik (a nie referencję jak to się Javowcom tłucze - referencje nie mogą być == null, a w Javie mogą..) - tylko prymitywy są kopiowane: longi, inty itd. W C++ jest trochę inaczej, są:
- wskaźniki - wszystko co jest zadeklarowane z gwiazdką (gwiazdkami)
  • Odpowiedz