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

nie działa funcka dynamic_cast

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
264 wizyt
pytanie zadane 29 kwietnia 2017 w C i C++ przez heros22pt Użytkownik (950 p.)
edycja 29 kwietnia 2017 przez heros22pt

Piszę grę arkanoid (z pomocą openGL) i mam pewien problem.. Generalnie gra prawie działa, piłka lata, odbija się, ale nie zbija klocków.. do klocków wykorzystuję klasę cKlocek, która dziedziczy po cProstokat... cProstokat ma wszystkie funkcje sciany itd., a cKlocek ma dodatkowo atrybut odporność, która powinna spadac wraz z kolejnym zetknieciem się pilki z klockiem. Niestety funkcja dynamic_cast nie rozróżnia klocka od prostokąta. Podczas debugowania przydziela zarówno pierwszemu jak i drugiemu wartość NULL...

Wstawiam część kodu, którą opisuję. Jeśli pokazać jakąś klasę piszcie, ponieważ nie jestem w stanie wsadzić całego kodu, który jest zawarty w 16 plikach. Proszę o pomoc, ponieważ siedzę nad tym debugowaniem już drugi dzień.

void cScena::odbij()
{

	for (int i = 0; i < tab.size(); i++)
	{
		for (int k = i + 1; k < tab.size(); k++)
		{	
	
			if (tab[i]->Kolizja(*tab[k]))
			{		
				cKlocek* klocek = dynamic_cast<cKlocek*>(tab[k]);
				if (klocek != NULL){
					cout << "x";
					klocek->odjacOdpornosc();				
				}
			}
		}
	}
}

 

niestety nie pomaga także dodawanie metod wirtualnych oraz destruktorów

cały program można zobaczyć na githubie:

https://github.com/heros22pt/arkanoid_1/tree/master/lab_5_2

komentarz 29 kwietnia 2017 przez j23 Mędrzec (195,240 p.)
Po co zakładasz drugi wątek na ten sam temat?

1 odpowiedź

0 głosów
odpowiedź 29 kwietnia 2017 przez tangarr Mędrzec (155,180 p.)
Jesteś pewien, że sprawdzane elementy są obiektami klasy cKlocek?
Dodaj wirtualną metodę nazwaKlasy() zwracającą nazwę klasy i użyj jej do debugu przed dynamic_castem.

Podobne pytania

0 głosów
3 odpowiedzi 998 wizyt
pytanie zadane 8 września 2015 w C i C++ przez mati98 Początkujący (290 p.)
0 głosów
1 odpowiedź 164 wizyt
0 głosów
4 odpowiedzi 3,901 wizyt

93,439 zapytań

142,431 odpowiedzi

322,677 komentarzy

62,802 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

...