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] - 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.

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