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

Użycie zmiennej z innej klasy która jest zapisana w innym pliku .h .cpp.

Object Storage Arubacloud
0 głosów
764 wizyt
pytanie zadane 15 maja 2016 w C i C++ przez Damian_Dusinski Nowicjusz (120 p.)

Witam. Pisze sobie pomału grę tekstową w konsoli i mam taki problem.

Mam clase Map_0 i w niej chce wyświetlić (modyfikować itp) zmienne z classy Gracz.

I kombinuje na wszystkie sposoby, ale nie mogę sobie z tym poradzić.

Szukałem jakiś sposobów w necie ale wszystko opiera się na jednym pliku a nie na kilku ;/.

Z góry dziękuje za pomoc.

Pozdrawiam

Damian Dusiński.

 

1 odpowiedź

0 głosów
odpowiedź 15 maja 2016 przez Ehlert Ekspert (212,670 p.)

Nie rozumiem. Dla wszystkich pól klasy które stanowią jej funkcjonalność "z zewnątrz" robisz metody set oraz get. I wszystko śmiga. Przy plikach *.hpp pamiętaj o wierszyku:

#ifndef GRANDFATHER_H
#define GRANDFATHER_H

struct foo {
    int member;
};

#endif /* GRANDFATHER_H */

Tworzysz instancję obiektów i wszystko gra. Jeśli nie pomogłem musisz doprecyzować problem.

komentarz 15 maja 2016 przez Damian_Dusinski Nowicjusz (120 p.)
Wszystko mam ustawione na public.

Wszystkie clasy mam zrobione w plikach .h i .cpp

i odczytuje je z mein.

i w clasie Gracz mam zmienne ustawione przez konstruktor np:

int zycie = 2

int sila = 1

itp...

i te zmienne chce wyświetlić w clasie Map_0.

no i pisze sobie cout << gracz_1(obiekt clasy Gracz).zycie;

No i program wykrywa jakiś błąd i nie wystartuje ;/.

Korzystam z Visual Studio 2013.
komentarz 15 maja 2016 przez Ehlert Ekspert (212,670 p.)

Prawdopodobnie gracz_1 nie jest w zasięgu klasy Map_0. To nie jest kwestia o tyle błędu logicznego(mimo, że to błąd), co projektowego. Klasa mapa powinna przechowywać informacje o mapie, posiadać tekstury, znaki, informacje o terenie itp., a nie zajmować się graczem.

Pomijam kwestię umieszczania wszystkiego publicznie w klasie, co jest niedorzecznością patrząc z obiektowego punktu programowania.

komentarz 15 maja 2016 przez Damian_Dusinski Nowicjusz (120 p.)
Wszystko mam ustawione na public bo chce zlokalizować błąd.

Clasa Map_0 chce tylko wyświetlić stan życia i tyle.

I mogę to w każdej chwili zmienić tylko chce wiedzieć dlaczego jest poza zasięgiem clasy.

Jak to odczytać w przyszłości.
komentarz 15 maja 2016 przez Ehlert Ekspert (212,670 p.)

Wklej gdzieś.

komentarz 15 maja 2016 przez Damian_Dusinski Nowicjusz (120 p.)
mein

#include <iostream>
#include <Windows.h>
#include "gracz.h"
#include "show.h"


using namespace std;

int main()
{
	Gracz gracz_01;
	cout << gracz_01.zycie;
	cout << gracz_01.zycie;
	Sleep(1000);
	Show show_0;

	show_0.odczyt_gracz();
	
}

Gracz.h

#include <iostream>


using namespace std;

class Gracz
{
public:
	int zycie;
	int sila;

	Gracz();

};

Gracz.cpp

#include <iostream>

#include "gracz.h"


using namespace std;


	Gracz::Gracz()
	{
		 zycie = 1;
		 sila = 1;
	}


show.h

#include <iostream>


using namespace std;

class Show
{
public:
	void odczyt_gracz();
};


show.cpp

#include <iostream>

#include "show.h"


using namespace std;



void Show::odczyt_gracz()
{
	cout << gracz_01.zycie;

}


No i w show.cpp nie chce już działać ;/

komentarz 15 maja 2016 przez Ehlert Ekspert (212,670 p.)

No to jest oczywiste, że to nie działa. Skąd metoda odczyt_gracz ma wiedzieć o istnieniu instancji gracz_1. Musisz przekazywać go w argumencie, najlepiej w taki sposób:

void Show::odczyt_gracz(const Gracz & player)
{
    cout << player.zycie;
 
}

 

komentarz 15 maja 2016 przez Damian_Dusinski Nowicjusz (120 p.)
Myślałem, że tak mam to zapisać 

void Show::odczyt_gracz(class Gracz & gracz_01)
{
	cout << gracz_01.zycie;

}

Ale to nie to ;/.

Chyba muszę poczytać jakiś poradnik o clasach ;/

Podobne pytania

0 głosów
2 odpowiedzi 1,368 wizyt
pytanie zadane 22 sierpnia 2020 w Java przez Bakkit Dyskutant (7,600 p.)
0 głosów
1 odpowiedź 2,542 wizyt
0 głosów
5 odpowiedzi 769 wizyt

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

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

...