|
Polski Portal COLOBOTa COLOBOT Polish Portal |
 |
Problemy [programowanie] - Gdzie umieścić klasę by się później do niej odwoływać?
vertical - 05-06-2011, 21:56 Temat postu: Gdzie umieścić klasę by się później do niej odwoływać? Mam jakąś tam klasę w pliku txt. Chcę wywołać w robocie metodę z tej klasy. Gdzie powinienem tą klasę umieścić by to działało?
krzys_h - 05-06-2011, 21:59
Deklaracja tej klasy musi być poprzedzona słowem kluczowym extern, a zawartość pliku txt z nią musisz wczytać do dowolnego slotu dowolnego robota.
vertical - 05-06-2011, 22:10
Dobra. Mam taką klasę (prawdopodobnie źle stworzoną) w jednym robocie:
Kod: | extern public class Program
{
public void powerCell(object a)
{
message(a.energyLevel);
}
} |
W drugim robocie mam:
Kod: | extern void object::Nowy()
{
Program pokaz;
pokaz.powerCell(energyCell);
} |
Co tu jest źle i jak zrobić by działało.
krzys_h - 05-06-2011, 22:25
Według mnie jest dobrze. Jeśli jeszcze coś nie działa to powiedz, czy wywala błędy, wypisuje jakieś wartości z kosmosu czy co się dzieje.
vertical - 05-06-2011, 22:34
No wywala. Po wciśnięciu ok podświetla 'class' i na dole wyświetla 'Brak deklaracji typu'. Może dlatego, że w ogóle pozbyłem się głównej funkcji programu?
krzys_h - 06-06-2011, 07:07
Sorki, mój błąd. Zamiast "extern" miało być "public", które wpisałeś. Wyrzuć extern to będzie ok.
vertical - 06-06-2011, 18:31
Tak też próbowałem. Wtedy po wciśnięciu ok nic się nie dzieje. W drugim robocie z kolei wyświetla 'brak nazwy zmiennej'.
adiblol - 06-06-2011, 18:44
Pokaż kod.
vertical - 06-06-2011, 18:54
Spójrz trochę wyżej
adiblol - 06-06-2011, 18:59
Eee, no właśnie, to jest CAŁY kod? A przypadkiem funkcja extern nie jest obowiązkowa?
vertical - 06-06-2011, 19:52
Nie wiem. A jest?
Simbax - 06-06-2011, 20:16
Sprawdź..........
Berserker - 06-06-2011, 20:19
Program z klasa musi byc uruchomiony by klasa sie wgrala do pamieci.
Pamietaj rowniez, ze powinienes zainicjalizowac instancje lub odwolac sie do istniejacej.
Kod: | Program test = new Program() |
lub
Kod: | Program test() // tylko przy deklaracji |
lub
Kod: | Program test, test2;
test = new Program();
test2 = test;
|
vertical - 06-06-2011, 20:53
No tylko że on się nie chce uruchomić.
EDIT:
Rozumiem, że program z klasą musi chodzić cały czas. Żeby chodził cały czas trzeba dać while(true) ale czy wtedy on tą klasę w ogóle odczytuje(nie wiem jak to określić)?
Berserker - 06-06-2011, 21:48
Kod: | public class Program
{
void powerCell(object a)
{
message(a.energyLevel);
}
} |
Tak powinna wygladac poprawna klasa, a jesli po tym nie bedzie dzialac, to daj caly kod z obu robotow.
vertical - 06-06-2011, 22:08
Dobra, już wiem co i jak. Dzięki za pomoc.
|
|