Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Vaja abi C++ headeritega märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
tambu
HV vaatleja
tambu

liitunud: 11.09.2009




sõnum 16.06.2012 14:25:33 Vaja abi C++ headeritega vasta tsitaadiga

Tere

Hakkasin ajaviiteks mingit RPG mängu nikerdama. Tekkis probleem, millele kuidagi lahendust ei leia icon_sad.gif

tsitaat:

...\area.h(21): error C2143: syntax error : missing ';' before '*'
...\area.h(21): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
...\area.h(21): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int


Viga tekib, kui tahan ühes klassis deklareerida massiivi, milles on teise klassi objektid. Ehk siis kõnealune rida 21: Ground *tiles[12][16];

"Ground" objekt on üks maapinna ruut ja "Area" on pmst üks ekraani suurune maaala. Pilt hakkab liikuma nii, et näitab korraga ühte tervet ala ja liikumisel hüppab kohe uue peale (ei ole scroller).

Probleem on tõsiselt veider. Täpselt sama koha peal on sama viga ka varem tekkinud ja olen suvalisi asju näppides kuidagi korda saanud. Uut funktsionaalsust lisades tuli see tagasi ja nüüd ei saa kuidagi lahti. Uue funktsionaalsuse all mõtlen selle massiivi täitmist ja ekraanile joonistamist.

#pragma once
#include"Ground.h"

class Area
{
protected:
   bool exists;
   // If is unlocked and player may enter
   bool isOpen;   

   // If is safe zone (or combat)
   bool isSafe;

   // Position of area in array
   unsigned int posX;
   unsigned int posY;
   
   // Contains information to create tiles
   int groundInfo[12][16];
   // Contains all tiles
   Ground *tiles[12][16];


public:
   Area();
   // Inits in beginning of game
   void Init(bool exists, bool isOpen, bool isSafe, unsigned int posX, unsigned int posY);
   // Basically init for revisiting area
   void ReInit();
   // Creates the tiles of area
   void CreateTiles(ALLEGRO_BITMAP* regular);
   void Render();

   bool GetExists(){return exists;}
   bool GetIsOpen(){return isOpen;}
   bool GetIsSafe(){return isSafe;}

   int GetPosX(){return posX;}
   int GetPosY(){return posY;}

   void SetGroundInfo(int areaGroundInfo[12][16])
   {
      for(int i = 0; i < 12; i++)
      {
         for(int j = 0; j < 16; j++)
         {
            Area::groundInfo[i][j] = areaGroundInfo[i][j];
         }         
      }            
   }


   };





#pragma once
#include <allegro5\allegro5.h>
#include "Globals.h"

enum TYPE{REGULAR, SWAMP, ICE, OBSTACLE, WATER};

class Ground
{
private:
   unsigned int ID; // either GROUND or L_BORDER etc.

   unsigned int x;
   unsigned int y;

   int width;
   int height;

   bool walkable;

   int type;

   ALLEGRO_BITMAP *image;

public:
   Ground();

   void Init(ALLEGRO_BITMAP *Image, int ID, bool walkable, int type);

   void Render();

   void Effect();

   int GetID(){return ID;}
   void SetID(int ID){Ground::ID = ID;}

   int GetX(){return x;}
   int GetY(){return x;}
   void SetX(unsigned int x){Ground::x = x;}
   void SetY(unsigned int y){Ground::y = y;}

   int GetWidth(){return width;}
   int GetHeight(){return height;}

   bool GetWalkable(){return walkable;}

   int GetType(){return type;}

   void SetImage(ALLEGRO_BITMAP *image){Ground::image = image;}
};
Kommentaarid: 10 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 17.06.2012 18:41:28 vasta tsitaadiga

Header failis teise headeri include on alati lihtne katki minema. Hetkel su ülejäänud kood (mida siin näha pole) tekitab arvatavasti olukorra kus nad tulevad vales järjekorras.

Kuna esimeses failis kasutad sa klassi Ground ainult pointerina, siis pole seasamas tervet deklaratsiooni vaja.

Piisab kui asendad rea 'include "Ground.h"' reaga 'class Ground;'

cpp failis on vaja include teha.

_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
tambu
HV vaatleja
tambu

liitunud: 11.09.2009




sõnum 17.06.2012 19:18:22 vasta tsitaadiga

Kena, asi hakkas tööle. Suur tänu sulle ^^
Kommentaarid: 10 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Vaja abi C++ headeritega
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.