|
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()
{
} |
|
|