praegune kellaaeg 18.06.2025 11:26:49
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
tambu
HV vaatleja

liitunud: 11.09.2009
|
16.06.2012 14:25:33
Vaja abi C++ headeritega |
|
|
Tere
Hakkasin ajaviiteks mingit RPG mängu nikerdama. Tekkis probleem, millele kuidagi lahendust ei leia
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 |
|
 |
Supiplex
HV veteran

liitunud: 11.12.2002
|
17.06.2012 18:41:28
|
|
|
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 |
|
 |
tambu
HV vaatleja

liitunud: 11.09.2009
|
17.06.2012 19:18:22
|
|
|
Kena, asi hakkas tööle. Suur tänu sulle ^^
|
|
Kommentaarid: 10 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
10 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
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.
|