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

Metoda wywołująca metodę tej samej klasy

Object Storage Arubacloud
0 głosów
380 wizyt
pytanie zadane 15 lutego 2017 w C i C++ przez Biznesmurzyn Nowicjusz (230 p.)

Witam, co zrobić by wywołać  game1.town()  wewnątrz game1.start() ?
'identifer "game1" is undefined ' taki błąd wyskakuje przy game1.town()

int main()
{
	Game game1;
	game1.menu();
	game1.start();

	
    return 0;
}
void Game::start()
{
	Player player1;
	player1.create();
	Sleep(1500);
	game1.town();

}

 

2 odpowiedzi

+2 głosów
odpowiedź 15 lutego 2017 przez draghan VIP (106,230 p.)
wybrane 15 lutego 2017 przez Biznesmurzyn
 
Najlepsza

Pamiętaj, że piszesz metodę dla klasy, nie dla obiektu. Wywołując dla dowolnego obiektu tej klasy metodę start(), wywołasz pośrednio metodę town() na rzecz tego obiektu.

A więc powinieneś napisać:

void Game::start()
{
    Player player1;
    player1.create();
    Sleep(1500);
    town(); 
}

 

komentarz 15 lutego 2017 przez Biznesmurzyn Nowicjusz (230 p.)

Działa, a gdybym chciał z metody klasy Game wywołać metodę innego obiektu, jak np tutaj z town() powołać player1.arenafight() ?

void Game::town() 
{
	while (true)
	{
		system("cls");
		{
			int choice;
			cout << "The town" << endl << endl << endl;
			cout << "Fight on the arena (1)" << endl;
			cout << " Check your statistics (2)" << endl;
			while (!(cin >> choice)) //dopóki strumień jest w stanie błędu -> dopóki podawane są błędne dane
			{
				cout << "blad" << endl << endl;//ew komunikat błędu
				cin.clear(); //kasowanie flagi błędu strumienia
				cin.sync(); //kasowanie zbędnych znaków z bufora
				cin.ignore();
			}
			switch (choice)
			{
			case 1: player1.arenafight(); break;
			case 2: player1.showstats(); break;
			}
		}
	}
}

 

komentarz 15 lutego 2017 przez draghan VIP (106,230 p.)

W takim wypadku masz kilka rozwiązań:

  • uczynić ów inny obiekt składową klasy,
  • zdefiniować ten obiekt w ciele metody (dość ograniczony sposób, zakładam że ten obiekt już gdzieś istnieje w kodzie, a więc nie o to chodzi),
  • przekazać referencję do obiektu jako parametr metody - to rozwiązanie wydaje się najlepsze.

Przykład:

class Sound
{
public:
    void play();
};

class Player
{
public:
    void play_that_sound( Sound &sound ) // przekazujesz jako parametr referencję do obiektu klasy Sound
    {
          sound.play(); // wykonujesz jakieś akcje na tym obiekcie
    }
};

int main()
{
    Player p;
    Sound s;
    p.play_that_sound( s ); // przekazujesz do metody referencję do obiektu s
}

 

0 głosów
odpowiedź 15 lutego 2017 przez 10kw10 Pasjonat (22,880 p.)
Metode możesz wykonac na danym obiekcie. Mozesz przekazać ten obiekt do metody menu i wywolac w niej na tym obiekcie metode start.

Podobne pytania

0 głosów
1 odpowiedź 369 wizyt
0 głosów
2 odpowiedzi 416 wizyt
pytanie zadane 15 lipca 2016 w C i C++ przez victordeleco2 Użytkownik (920 p.)
0 głosów
3 odpowiedzi 1,207 wizyt
pytanie zadane 5 kwietnia 2020 w C i C++ przez nanautzin Obywatel (1,510 p.)

92,540 zapytań

141,383 odpowiedzi

319,482 komentarzy

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

...