Oke, ik heb de code van je project bij mij proberen compileren, wat 4 errors en 1 warning gaf. Ik ben begonnen bij volgende error:
Error: Block.h line 31 `Directions' does not name a type
Directions is gedefiniëerd in Movement.h, maar deze is niet geïnclude. Voeg
toe na
#define __BLOCK_H__ en voor
struct Block en het probleem is opgelost.
Na opnieuw compileren bleven er nog steeds 3 errors en 1 warning over. 1 error ging over Graphics.h, de andere 2 over Graphics.cpp. Aangezien Graphics.h in Graphics.cpp geïnclude wordt, is het mogelijk dat de errors in de cpp het gevolg zijn van die in de headerfile, dus gaan we eerst naar de headerfile kijken.
Error: Graphics.h line 16 expected initializer before "void"
De error zegt dat er iets verwacht wordt voor 'void', hoewel dat de eerste declaratieregel in Graphics.h is... Logisch lijkt dit dus niet, of toch?
Want er is wel degelijk code die voor die void komt, die misschien slecht afgesloten is, waardoor deze foutmelding verschijnt. Graphics.h include namelijk 2 andere bestanden.
De grootste kans om de fout te vinden is in het laatst geïnclude bestand (Block.h), echter ziet het ernaar uit dat alle accolades, haakjes en puntkomma's hier correct zijn. Block.h heeft op zijn beurt ook een include (Movement.h), maar ook deze is in orde.
Dus moeten we het in de include ervoor gaan zoeken, Player.h. En Jawel, de laatste regel in die file is niet goed afgesloten (lijn48). De
; ontbreekt na de declaratie van Kick. Na deze toe te voegen, compileren we opnieuw.
Nu krijgen we 2 errors in Graphics.cpp, waarvan 1 zich opnieuw op de eerste lijn met 'echte code' bevindt. Dus gaan we opnieuw in de laatst geïnclude header kijken (Graphics.h) en ook daar zien we dat er een
; aan het einde van de laatste lijn ontbreekt (lijn 18)
Verbeteren en compileren geven nog 1 error en warning, die beiden over lijn 144 gaan in Main.cpp, en alletwee over MoveBlock. In de eerste plaats dienen we naar de error te kijken.
Error: Main.cpp line 144`MoveBlock' was not declared in this scope
Dit wil zeggen dat de compiler MoveBlock niet kent binnen de context waarin het gebruikt wordt. Wat niet zo onlogisch is, aangezien je de functie niet kenbaar hebt gemaakt
De functie MoveBlock staat wel in Block.cpp, maar niet in Block.h. Je bent waarschijnlijk iets te snel over deze regel van de tutorial gevlogen:
Dus in Block.h moet je volgende regel nog toevoegen (bvb na de declaratie van CreateBlock):
Code:
void MoveBlock(Block& block);
Compileer en Run