Användarprofil

Uppgifter
Användarnamn
Email
Besök -
Hemsida Ingen
Plats (stad)
Senaste besök 01:00 - 1:a Januari 1970
Poster i forumet
Varningar
Grupp
Medlem sedan 01:00 - 1:a Januari 1970
Artiklar och filer
Den här användaren har inga artiklar eller filer

Avatar


Presentation av

Den här användaren har inte skapat någon personlig presentation.

Senaste inläggen i forumet

C++ const och arv problem
Hej, jag håller på och utvecklar ett enkelt rymdshooterspel och har lite problem med två konstanter. Jag använder ett spelbibiliotek som heter VGC. I dess bildhantering kan man komma åt en bilds bredd och höjd genom VGCDisplay::getWidth(VGCImage image);

Jag får följande fel i filen Ship.cpp
ship.cpp(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
ship.cpp(16) : error C2065: 'ship' : undeclared identifier
ship.cpp(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Här är vad jag tror är den relevanta delen av Ship:
Header:
  1. #ifndef INCLUDED_SHIP
  2. #define INCLUDED_SHIP
  3.  
  4. #include "ActiveObject.h"
  5. #include "VGCVirtualGameConsole.h"
  6.  
  7. class Ship : public ActiveObject{
  8. public:
  9. Ship (int x, int y);
  10. ~Ship();
  11.  
  12. void addScore(int inScore);
  13. int getScore();
  14. int getXPos();
  15. int getYPos();
  16. void render();
  17. void setXPos(int x);
  18. void setYPos(int y);
  19. void update();
  20.  
  21. VGCImage ship;
  22.  
  23.  
  24. private:
  25. int health;
  26. int score;
  27.  
  28. };
  29. #endif

Cpp-filen:
  1. #include "VGCVirtualGameConsole.h"
  2. #include "ActiveObject.h"
  3. #include "Ship.h"
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. const VGCVector frameIndex = VGCVector(0, 0);
  9. VGCVector position = VGCVector(0, 0);
  10. const VGCAdjustment adjustment = VGCAdjustment(0.0, 0.0);
  11.  
  12. const string shipFilename = "Ship.tif";
  13. const int SHIP_X_FRAME_COUNT = 1;
  14. const int SHIP_Y_FRAME_COUNT = 1;
  15.  
  16. HEIGHT = VGCDisplay::getHeight(ship); <------- DESSA RADER KLAGAR DEN P...
  17. WIDTH = VGCDisplay::getWidth(ship); <-------
  18.  
  19.  
  20. //Constructor
  21. Ship::Ship(int x, int y){
  22.  
  23. xPos = x;
  24. yPos = y;
  25. score = 0;
  26.  
  27. position = VGCVector(xPos, yPos);
  28. ship = VGCDisplay::openImage(
  29. shipFilename,
  30. SHIP_X_FRAME_COUNT,
  31. SHIP_Y_FRAME_COUNT
  32. );
  33.  
  34.  
  35. }

Basklassen ActiveObject header:
  1. #ifndef INCLUDED_ACTIVEOBJECT
  2. #define INCLUDED_ACTIVEOBJECT
  3.  
  4. #include "GameObject.h"
  5. #include "VGCVector.h"
  6.  
  7. class ActiveObject : public GameObject{
  8.  
  9. public:
  10. ActiveObject();
  11. ~ActiveObject();
  12.  
  13. bool collision(GameObject* inObj);
  14. const int HEIGHT;
  15. const int WIDTH;
  16.  
  17.  
  18. protected:
  19. VGCVector direction;
  20.  
  21.  
  22.  
  23. };
  24. #endif

Så båda variablerna är deklarerade i headern för ActiveObject som Ship ärver ifrån men ändå känner den inte igen dem. Det jag vill göra är att skapa en kollisionskontrollsmetod i basklassen ActiveObject som behöver veta bildens bredd och höjd, men sätta dessa som konstanta värden i de härledda underklasserna. Vad gör jag då för fel?

Postad 00:43 - 26:e Oktober 2008

Skicka meddelande
Läs s blog