| | |
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Autor | Správa |
---|
| Napísal Xarxes: 13.09.2012 14:45 | |
|
ako inicializovať dvojrozmerné pole objektov v rámci kompozície? budem velmi vdačný za nejakú radu. už dlho sa stým trápim. chcem urobiť board zložený z dlaždičiek (objektov) tile.
Kód: #ifndef POKUS_H #define POKUS_H
#include <iostream> using namespace std;
class Tile { public: enum State {OPEN, CLOSED, MARKED}; private: State state; int value; public: Tile() { value = 0; state = CLOSED; } State getState() const { return state; } int getValue() const { return value; } void setState(State s) { state = s; } void setValue(int val) { value = val; } //void print(Tile &t); };
class Board { private: Tile tiles[][]; //tu je chyba int rows, cols, mines; public: Board(Tile t[][]) : tiles(t[4][4]), rows(4), cols(4), mines(1) {} //tu je chyba int getRows() const { return rows; } int getCols() const { return cols; } int getMines() const { return mines; } //void printInfo(int,int); };
#endif
//main.cpp
#include "pokus.h" #include <iostream> using namespace std;
int main() { Tile tile[4][4]; //toto je divne Board board(tile); //chyba return 0; }
|
|
Registrovaný: 11.01.09 Prihlásený: 22.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 13.09.2012 16:37 | |
|
Kedze velkost pola dopredu nevies, je vhodne pouzit dynamicku alokaciu a kedze jazyk C++ je objektovo orientovany, je dobre tuto alokaciu robit vovnutri objektu a nie mimo. Uprav konstruktor triedy Board podla nasledujuceho prikladu, kde mas aj destruktor, ktory uvolni alokovanu pamat pri ruseni objektu:
Kód: Board::Board( int size_x, int size_y ) {
this->tiles = new Tile* [size_x]; for ( int i = 0; i < size_x; i++ ) this->tiles[i] = new Tile [size_y];
this->rows = size_y; this->cols = size_x; this->mines = 1;
}
Board::~Board() { for ( int i = 0; i < this->cols; i++ ) delete [] this->tiles[i];
delete [] this->tiles; }
// .... funkcia main potom vyzera nasledovne ....
int main() { Board board( 4, 5 );
return 0; }
+bolo by vhodne pridat kopirovaci kontruktor, aby ti to nerobilo neplechu, ked budes predavat triedu Board ako parameter funkcie.
|
|
| Napísal autor témy Xarxes: 13.09.2012 17:31 | |
|
ďakujem. už to beží. Namiesto Tile tiles[][] som dal Tile **tiles;
spravil som aj ten kopirovaci konstruktor a operator= a všetko beží. ešte raz diki
|
|
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| inicializacia HDD v Pevné disky a radiče | 4 | 476 | 07.04.2013 16:34 rybicka | | facebox inicializacia v JavaScript, VBScript, Ajax | 2 | 494 | 13.09.2011 17:30 DeeJay3 | | inicializacia scriptu (asi)?? v JavaScript, VBScript, Ajax | 2 | 387 | 03.11.2010 11:40 DeeJay3 | | Nero 8 -inicializacia v Ostatné programy | 8 | 576 | 24.05.2011 17:04 holubbn | | inicializacia viacrozmerneho pola v PHP, ASP | 15 | 866 | 02.09.2008 10:15 toma-mato | | Inicializacia SSD disku v SSD disky | 7 | 1714 | 23.12.2013 0:27 Joaqo | | Matlab script inicializácia premenných v Assembler, C, C++, Pascal, Java | 0 | 384 | 16.05.2017 12:10 beastiq | | Inicializacia ovladaca LAN - chyba 37 v Ovládače | 0 | 381 | 08.01.2011 0:04 HavloR | | dvojite drop down menu Inicializacia v JavaScript, VBScript, Ajax | 0 | 556 | 30.11.2008 23:01 miob | | Mám sa učiť C ++/objective C/ C#? v Assembler, C, C++, Pascal, Java | 5 | 730 | 08.07.2014 20:40 XOLOO | | Hladam hracov na C&C Generals Zero Hour v Počítačové hry | 10 | 1250 | 07.03.2007 19:22 Spirit | | Hledá se programátor C/C++ pro vesmírné projekty (Praha) v Ponuka práce | 0 | 1123 | 10.05.2016 14:59 evolvsys | | rozdiel medzi Borland 3.1 C++ vs Net. C++ v Assembler, C, C++, Pascal, Java | 4 | 575 | 20.07.2010 12:54 walther | | Naučte se C++ za 21 dní + C++Builder 6 v Assembler, C, C++, Pascal, Java | 18 | 2413 | 21.05.2010 21:08 Wpegb | | K: PC Literaturu- C++/C#/java/python/ruby/RoR v Kúpim | 0 | 410 | 13.05.2014 18:16 expresado | | aky je rozdiel medzi C++ a Visual C++ ? v Assembler, C, C++, Pascal, Java | 8 | 1964 | 19.02.2011 22:46 vendo2 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|