Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 3 ] 
AutorSpráva
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok NapísalOffline : 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;
}


Offline

Skúsený užívateľ
Skúsený užívateľ
inicializacia C++

Registrovaný: 11.01.09
Prihlásený: 22.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 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.


Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok Napísal autor témyOffline : 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


Odpovedať na tému [ Príspevkov: 3 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. inicializacia HDD

v Pevné disky a radiče

4

476

07.04.2013 16:34

rybicka Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. facebox inicializacia

v JavaScript, VBScript, Ajax

2

494

13.09.2011 17:30

DeeJay3 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. inicializacia scriptu (asi)??

v JavaScript, VBScript, Ajax

2

387

03.11.2010 11:40

DeeJay3 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nero 8 -inicializacia

v Ostatné programy

8

576

24.05.2011 17:04

holubbn Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. inicializacia viacrozmerneho pola

v PHP, ASP

15

866

02.09.2008 10:15

toma-mato Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Inicializacia SSD disku

v SSD disky

7

1714

23.12.2013 0:27

Joaqo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Matlab script inicializácia premenných

v Assembler, C, C++, Pascal, Java

0

384

16.05.2017 12:10

beastiq Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Inicializacia ovladaca LAN - chyba 37

v Ovládače

0

381

08.01.2011 0:04

HavloR Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. dvojite drop down menu Inicializacia

v JavaScript, VBScript, Ajax

0

556

30.11.2008 23:01

miob Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mám sa učiť C ++/objective C/ C#?

v Assembler, C, C++, Pascal, Java

5

730

08.07.2014 20:40

XOLOO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hladam hracov na C&C Generals Zero Hour

v Počítačové hry

10

1250

07.03.2007 19:22

Spirit Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hledá se programátor C/C++ pro vesmírné projekty (Praha)

v Ponuka práce

0

1123

10.05.2016 14:59

evolvsys Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. rozdiel medzi Borland 3.1 C++ vs Net. C++

v Assembler, C, C++, Pascal, Java

4

575

20.07.2010 12:54

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Naučte se C++ za 21 dní + C++Builder 6

v Assembler, C, C++, Pascal, Java

18

2413

21.05.2010 21:08

Wpegb Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. K: PC Literaturu- C++/C#/java/python/ruby/RoR

v Kúpim

0

410

13.05.2014 18:16

expresado Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. aky je rozdiel medzi C++ a Visual C++ ?

v Assembler, C, C++, Pascal, Java

8

1964

19.02.2011 22:46

vendo2 Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra