Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 
Polski Portal COLOBOTa
COLOBOT Polish Portal

Problemy [programowanie] - Połączenie tablicą w klasie

DaFFy92 - 21-02-2010, 15:55
Temat postu: Połączenie tablicą w klasie
Próbuje napisać skrypt, ale wyskakuje błąd podczas odpalania (podczas kompilowania nie zgłasza błędu)

Kod:
public class turniej
{
    static bool start=false;
    static string nick[4];
    static object bot[4];
    static bool ready[4];
}

extern void object::Program ()
{
    turniej tur();
    while(sizeof(tur.ready)<4) wait(0.1); {w tej linijce wywala błąd}
    while(!(tur.ready[0] && tur.ready[1] && tur.ready[2] && tur.ready[3])) wait(1);
   
    tur.start=true;       
}

adiblol - 21-02-2010, 16:28

DaFFy92 napisał/a:
while(sizeof(tur.ready)<4) wait(0.1); {w tej linijce wywala błąd}

Problem w tym, że rozmiar tablicy jest stały, więc stosowanie instrukcji sizeof nie ma sensu.

DaFFy92 - 21-02-2010, 20:24

Nie, problem jest w tym że wyświetla się wiadomość, że zmienna nie została zainicjowana.

Poza tym sprawdzanie ma sens, ponieważ w bool ready[4]; maksymalną ilość rekordów w tablicy, a sizeof() sprawdza ile ma wartości w tablicy.

Przykładem:
Kod:
extern void object::Program ()
{
int b[6];
b[0]=2;
b[1]=3;
message(sizeof(b));
}

Wynikiem jest 2

Berserker - 21-02-2010, 20:28

Nadaj odrazu jakas wartosc calej tablicy (np false)
DaFFy92 - 21-02-2010, 20:41

Berserker napisał/a:
Nadaj odrazu jakas wartosc calej tablicy (np false)

Da się nadać jedną wartość wszystkim rekordom w tablicy? Jak?

FE4R - 22-02-2010, 00:30

DaFFy92 napisał/a:
Berserker napisał/a:
Nadaj odrazu jakas wartosc calej tablicy (np false)

Da się nadać jedną wartość wszystkim rekordom w tablicy? Jak?

Kod:
static bool ready[4] = (false, false, false, false);

O ile się nie mylę.

@EDIT 1:
Szkoda, że wywala błąd. Być może dlatego, że tablica jest statyczna, ale nie jestem pewien. W każdym razie, gdy w taki sposób zainicjujesz tablicę poza definicją klasy, to gra nie wywali błędu.

@EDIT 2:
Tablica nie może być statyczna.

Kod:
public class MojaKlasa
{
bool list[4] = (false, false, false, false);
}

extern void object::Program1()
{

}


Powered by phpBB modified by Przemo & WRIM © 2003 phpBB Group