Forum: C++ const och arv problem

Forum huvudsida -> Programmering -> C++ const och arv problem

Sidor: 1

Till botten

TWGCM 00:43 - 26:e Oktober 2008 | Post #1
Medlem
Inlägg: 1


Skicka PM
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?




Fasting 12:54 - 26:e Oktober 2008 | Post #2
Medlem
Inlägg: 121


Skicka PM
Läser programmeringsmetodik ser jagSmiley

ship.cpp(16) : error C2065: 'ship' : undeclared identifier

,,r nog för att du försöker få fram storleken på en bild du inte har deklarerat ännu. Med andra ord har inte bilden hunnit läsas in.
Du kan lägga den efter du har kört OpenImage i konstruktorn.

Angående de andra felen är jag inte säker på varför de krånglar men troligen för att du satt dem som konstanter och i efterhand vill ändra dem.

-------------------------
Efter att ni har läst det här har ni insett att det inte gav något.



Sidor: 1

Forum huvudsida -> Programmering -> C++ const och arv problem
Atom feed

Du får inte posta i den här tråden | Till toppen