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

Headery pośrednio includujące siebie nawazjem

Cloud VPS
0 głosów
238 wizyt
pytanie zadane 20 kwietnia 2016 w C i C++ przez Grzyboo Nałogowiec (28,880 p.)

Po dłuższym obcowaniu z pakietami Javy zupełnie zgłupiałem i nie wiem jak to zrobić:

GameMap includes Player. Player includes Entity. Entity includes GameMap

 

GameMap.h

#pragma once
#include "Player.h"
class GameMap
{

};

 

Player.h

#pragma once
#include "Entity.h"
class Player : public Entity
{

};

 

Entity.h

#pragma once
#include "GameMap.h"
class Entity
{

};

 

Ni stąd, ni zowąd wyskakuje 'Entity': base class undefined w player.h.

Gdy zamienię #include "Player.h" na "Entity.h" w GameMap.h to kompiluje.

1 odpowiedź

0 głosów
odpowiedź 20 kwietnia 2016 przez Avernis Nałogowiec (27,400 p.)
wybrane 20 kwietnia 2016 przez Grzyboo
 
Najlepsza
Chodzi pewnie o to że kompilator się zapętla
komentarz 20 kwietnia 2016 przez MetGang Nałogowiec (34,360 p.)
Albo użytkownik nie umie się dostosować do narzędzia, które wybrał :) Żaden język nie jest doskonały. C++ może i ma stertę śmieci w swoim standardzie, ale posiada też unikalne i przydatne zdolności.
komentarz 20 kwietnia 2016 przez Avernis Nałogowiec (27,400 p.)
Poza tym jest szybszy od javy
komentarz 20 kwietnia 2016 przez Grzyboo Nałogowiec (28,880 p.)
Nie, nie oceniam języka po headerach. C++ ma dużo różnych kwiatków i nieścisłości. Nie był językiem zaplanowanym od podstaw tylko rozwijanym z czasem i to widać.

A to, że jest szybszy od Javy to jakiś durny argument. Mówię tutaj o składni i logice języka, a ty wyjeżdżasz z szybkością. Java jest wolniejsza, bo ma ku temu powody. C++ ma śmieciową składnie bez powodu.
komentarz 20 kwietnia 2016 przez adrian17 Mentor (354,120 p.)

bez powodu.

Powody są dobre, tylko historyczne - C wywodzi się z lat 70tych, wtedy o wyrafinowanych systemach modułów mało kto w ogóle marzył.

W każdym razie "problem" na pewno da się rozwiązać przez foward declaration w którąś stronę.

komentarz 20 kwietnia 2016 przez Grzyboo Nałogowiec (28,880 p.)
Tzn tak. Powód Javy jest taki, że dostajemy coś za coś. W przypadku C++ powodem jest bardzo stary C.

Tak czy siak, problem udało się już rozwiązać.

Podobne pytania

+1 głos
6 odpowiedzi 354 wizyt
pytanie zadane 13 października 2015 w Offtop przez KULTI Obywatel (1,400 p.)
0 głosów
2 odpowiedzi 421 wizyt

93,454 zapytań

142,449 odpowiedzi

322,718 komentarzy

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

Kursy INF.02 i INF.03
...