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

Problem z this

Object Storage Arubacloud
0 głosów
406 wizyt
pytanie zadane 1 kwietnia 2016 w C i C++ przez El Toro Nowicjusz (120 p.)

Witam.

Pisze tutaj gdyż dopiero zaczynam moją naukę C++ i czytam sobie książkę "Język C++ Szkoła Programowania" pana Stephena Prata i w rozdziale 10 w zadaniu 6 trafiłem na problem którego nie wiem jak rozwiązać.

Tutaj jest deklaracja :

class Move
{
private:
	double x;
	double y;
public:

	Move(double a = 0, double b = 0);
	void showMove() const;

	Move add(const Move & m) const;

	void reset(double a = 0, double b = 0);

	~Move();
};

Zależy mi dokładnie na metodzie

Move add(const Move & m) const;

gdyż według zaleceń autora "powyższa metoda sumuje x obiektu m i x obiektu wywołującego, y obiektu m i y obiektu wywołującego, tworzy obiekt, inicjalizuje go obliczonymi sumami x i y i zwraca tak zainicjalizowany obiekt" . Efekty mojej pracy wyglądają w następujący sposób:

Move Move::add(const Move & m) const
{
	double sumX, sumY;

	sumX = x + m.x;
	sumY = y + m.y;

	Move one;
	one.x = sumX;
	one.y = sumY;

	return one;
}

i nie działa tak jak bym chciał bo w sumie chyba nie powinno, bo czuję, ze trochę przekombinowałem i da się to prosto rozwiązać wskaźnikiem this i tak chciałbym, abyście mnie nakierowali lub podpowiedzieli jak to zrobić aby uzyskać efekt z this.

Z góry dziękuje i pozdrawiam :>

2 odpowiedzi

+1 głos
odpowiedź 1 kwietnia 2016 przez Łukasz Wasilewski Mądrala (5,190 p.)
edycja 1 kwietnia 2016 przez Łukasz Wasilewski

this to wskaźnik do obiektu klasy na której go używasz. 

Np. jeżeli masz taką klasę:

class account
{
public:
int sumuj(int, int);

private:
 int suma;
}


// Możesz użyć wskaźnika this tak:
int sumuj(int a, int b)
{
this->suma = a + b;
return suma;
}
// -> ponieważ tak używamy wskaźników

// Teraz main
int main()
{
account sprzedaneRowery;
account zarobkiFirmy;

int SklepA = 1000;
int SklepB = 1201;
int canaRoweru = 600;

int ilePoszlo = liczbaUzytkownikow.sumuj(SklepA, SklepB);

std::cout << "Zarobilismy " << zarobkiFirmy.sumuj(ilePoszlo, cenaRoweru);
}

Jak widzisz this w funkcji sumuj działa dla obiektu sprzedaneRowery, oraz zarobkiFirmy.

komentarz 1 kwietnia 2016 przez Łukasz Wasilewski Mądrala (5,190 p.)

U Ciebie będzie to w tym miejscu:

sumX = this->x + m.x;
sumY = this->y + m.y;

 

1
komentarz 1 kwietnia 2016 przez El Toro Nowicjusz (120 p.)

Dzięki ;> Juz poradzilem sobie. Chodzilo mi o to:

	this->x += m.x;
	this->y += m.y;

	return *this;

 

komentarz 1 kwietnia 2016 przez Łukasz Wasilewski Mądrala (5,190 p.)
Źle zrozumiałem :D . Chciałem pomóc ^^
0 głosów
odpowiedź 1 kwietnia 2016 przez criss Mędrzec (172,590 p.)

Tzn. nie musisz nawet wykorzystywać this. Jeśli byś napisał po prostu nazwe składowej to też będzie to znaczyło, że chodzi o składową obiektu z którego wywołujesz tą metode. 

this się przydaje, kiedy obiekt ma przekazać sam siebie do jakiejś funkcji.

Podobne pytania

0 głosów
4 odpowiedzi 232 wizyt
pytanie zadane 22 kwietnia 2016 w Java przez KamilloPL Gaduła (3,470 p.)
0 głosów
1 odpowiedź 1,988 wizyt
pytanie zadane 11 kwietnia 2018 w C i C++ przez antek782 Początkujący (490 p.)
0 głosów
3 odpowiedzi 3,866 wizyt
pytanie zadane 18 czerwca 2015 w C i C++ przez Wirus Stary wyjadacz (14,000 p.)

92,568 zapytań

141,420 odpowiedzi

319,624 komentarzy

61,956 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...