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

question-closed Programowanie obiektowe, wskaźniki

Object Storage Arubacloud
0 głosów
176 wizyt
pytanie zadane 13 sierpnia 2018 w C i C++ przez michal12334 Obywatel (1,510 p.)
zamknięte 13 sierpnia 2018 przez michal12334

Witam, jestem w trakcie robienia gry tekstowej i mam problem ze zrobieniem ekwipunku.

Ekwipunek:

class Ekwipunek {
public:
	Ekwipunek(Tunika t, Spodnie s, Rekawice r, Buty b);
	void zmienTunike();
	void zmienSpodnie();
	void zmienRekawice();
	void zmienButy();
	void zmienBron();
	void dodajTunike(Tunika t);
	void dodajSpodnie(Spodnie s);
	void dodajRekawice(Rekawice r);
	void dodajButy(Buty b);
	void usunTunike();
	void usunSpodnie();
	void usunRekawice();
	void usunButy();
	void wyswietlTuniki();
	void wyswietlSpodnie();
	void wyswietlRekawice();
	void wyswietlButy();
	void wyswietlBronie();

private:
	
	ZbrojaLista *tuniki;
	ZbrojaLista *spodnie;
	ZbrojaLista *rekawice;
	ZbrojaLista *buty;
	int ileBroni{1};
	int ileTunik{1};
	int ileSpodnii{1};
	int ileRekawic{1};
	int ileButow{1};
};
class Zbroja {
public:
	Zbroja(int p, int z, int mz, int o);
	void napraw();
	virtual void ulepsz()=0;
	int zwrocPoziom();
	int zwrocZuzycie();
	int zwrocMZuzycie();
	int zwrocOchrona();

protected:
	int poziom;
	int zuzycie;
	int maksZuzycie;
	int ochrona;
};

class Tunika :public Zbroja {
public:
	Tunika(int p=1, int z=100, int mz=100, int o=20);
	virtual void ulepsz();
};

class Spodnie :public Zbroja {
public:
	Spodnie(int p=1, int z=100, int mz=100, int o=10);
	virtual void ulepsz();
};

class Rekawice :public Zbroja {
public:
	Rekawice(int p=1, int z=100, int mz=100, int o=5);
	virtual void ulepsz();
};

class Buty :public Zbroja {
public:
	Buty(int p=1, int z=100, int mz=100, int o=5);
	virtual void ulepsz();
};

class ZbrojaLista {
public:
	ZbrojaLista(Zbroja *z);
	void dodaj(Zbroja *z);
	void usun(int i);
	void zamien(int i=0, int j=1);
	void zmien(Zbroja *z, int i);
	Zbroja *zwroc(int i=0);

private:
	int najwiekszyIndeks;
	Zbroja *zbroja;
	ZbrojaLista *w_nastepny;
};
int Zbroja::zwrocPoziom() {
	return poziom;
}

int Zbroja::zwrocZuzycie() {
	return zuzycie;
}

int Zbroja::zwrocMZuzycie() {
	return maksZuzycie;
}

int Zbroja::zwrocOchrona() {
	return ochrona;
}

Zbroja* ZbrojaLista::zwroc(int i) {
	if(i==0) return zbroja;
	return w_nastepny->zwroc(i-1);
}
void Ekwipunek::wyswietlTuniki() {
	for(int i = 0; i<ileTunik; i++) {
		cout << "Tunika nr " << i+1 << ":" << endl;
		cout << "   poziom:  " << tuniki->zwroc(i)->zwrocPoziom << endl;
		cout << "   ochrona: " << tuniki->zwroc(i)->zwrocOchrona << endl;
		cout << "   zuzycie: " << tuniki->zwroc(i)->zwrocZuzycie << "/" << tuniki->zwroc(i)->zwrocMZuzycie << endl;
	}
}

Kompilator zwraca mi błąd „Zbroja::zwrocPoziom”: niestandardowa składnia; użyj znaku „&”, aby utworzyć wskaźnik elementu członkowskiego i nie wiem jak to naprawaić

Próbowałem też przechowywać tuniki w vectorze vector<Tunika*> tuniki ale wyskakiwał mi ten sam błąd.

Z góry dzięki za pomoc

komentarz zamknięcia: Otrzymałem odpowiedź

1 odpowiedź

+1 głos
odpowiedź 13 sierpnia 2018 przez niezalogowany
wybrane 13 sierpnia 2018 przez michal12334
 
Najlepsza

zwrocPoziom, zwrocOchrona, zwrocZuzycie to funkcje więc ich wywołanie powinno wyglądać tak:

cout << "   poziom:  " << tuniki->zwroc(i)->zwrocPoziom() << endl;
komentarz 13 sierpnia 2018 przez michal12334 Obywatel (1,510 p.)
Rzeczywiście, nie zauważyłem tego, teraz już wszystko działa. Wielkie dzięki za pomoc.

Podobne pytania

0 głosów
1 odpowiedź 858 wizyt
0 głosów
1 odpowiedź 177 wizyt
0 głosów
2 odpowiedzi 1,192 wizyt

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 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!

...