[ Príspevkov: 3 ] 
AutorSpráva
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
NapísalOffline : 13.09.2012 14:45 | inicializacia C++

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ý: 19.02.25
Príspevky: 1397
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 13.09.2012 16:37 | inicializacia C++

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
Napísal autor témyOffline : 13.09.2012 17:31 | inicializacia C++

ď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


 [ Príspevkov: 3 ] 


inicializacia C++



Podobné témy

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

facebox inicializacia

v JavaScript, VBScript, Ajax

2

537

13.09.2011 17:30

DeeJay3

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

inicializacia HDD

v Pevné disky a radiče

4

527

07.04.2013 16:34

rybicka

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

Inicializacia SSD disku

v SSD disky

7

1825

23.12.2013 0:27

Joaqo

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

inicializacia scriptu (asi)??

v JavaScript, VBScript, Ajax

2

422

03.11.2010 11:40

DeeJay3

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

Nero 8 -inicializacia

v Ostatné programy

8

619

24.05.2011 17:04

holubbn

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

inicializacia viacrozmerneho pola

v PHP, ASP

15

946

02.09.2008 10:15

toma-mato

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

433

16.05.2017 12:10

beastiq

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

Inicializacia ovladaca LAN - chyba 37

v Ovládače

0

418

08.01.2011 0:04

HavloR

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

dvojite drop down menu Inicializacia

v JavaScript, VBScript, Ajax

0

592

30.11.2008 23:01

miob

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

804

08.07.2014 20:40

XOLOO

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

2487

21.05.2010 21:08

Wpegb

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

474

13.05.2014 18:16

expresado

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

1500

10.05.2016 14:59

evolvsys

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

1306

07.03.2007 19:22

Spirit

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

626

20.07.2010 12:54

walther

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

2023

19.02.2011 22:46

vendo2



© 2005 - 2025 PCforum, edited by JanoF