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
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
Gdzie umieścić klasę by się później do niej odwoływać?
Autor Wiadomość
vertical


Dołączył: 05 Cze 2011
Posty: 9
Skąd: nieJestemBotem
Wysłany: 05-06-2011, 21:56   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 


Twoja ulubiona misja: Wszystkie :)
Pomógł: 3 razy
Wiek: 20
Dołączył: 12 Gru 2010
Posty: 255
Skąd: Łódź
Wysłany: 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.
_________________
Gość, cieszysz się, że skontaktowaliśmy się z EPSITEC?
 
 
     
vertical


Dołączył: 05 Cze 2011
Posty: 9
Skąd: nieJestemBotem
Wysłany: 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 


Twoja ulubiona misja: Wszystkie :)
Pomógł: 3 razy
Wiek: 20
Dołączył: 12 Gru 2010
Posty: 255
Skąd: Łódź
Wysłany: 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.
_________________
Gość, cieszysz się, że skontaktowaliśmy się z EPSITEC?
 
 
     
vertical


Dołączył: 05 Cze 2011
Posty: 9
Skąd: nieJestemBotem
Wysłany: 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 


Twoja ulubiona misja: Wszystkie :)
Pomógł: 3 razy
Wiek: 20
Dołączył: 12 Gru 2010
Posty: 255
Skąd: Łódź
Wysłany: 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.
_________________
Gość, cieszysz się, że skontaktowaliśmy się z EPSITEC?
 
 
     
vertical


Dołączył: 05 Cze 2011
Posty: 9
Skąd: nieJestemBotem
Wysłany: 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 
Administrator forum
FLOSS FTW!


Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy
Dołączył: 21 Kwi 2008
Posty: 1313
Skąd: pokój odsłuchowy
Wysłany: 06-06-2011, 18:44   

Pokaż kod.
_________________
1Tbps Project && Telecomix Network

 
 
     
vertical


Dołączył: 05 Cze 2011
Posty: 9
Skąd: nieJestemBotem
Wysłany: 06-06-2011, 18:54   

Spójrz trochę wyżej ;)
 
     
adiblol 
Administrator forum
FLOSS FTW!


Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy
Dołączył: 21 Kwi 2008
Posty: 1313
Skąd: pokój odsłuchowy
Wysłany: 06-06-2011, 18:59   

Eee, no właśnie, to jest CAŁY kod? A przypadkiem funkcja extern nie jest obowiązkowa?
_________________
1Tbps Project && Telecomix Network

 
 
     
vertical


Dołączył: 05 Cze 2011
Posty: 9
Skąd: nieJestemBotem
Wysłany: 06-06-2011, 19:52   

Nie wiem. A jest?
 
     
Simbax 
Mod


Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy
Wiek: 22
Dołączył: 07 Sie 2009
Posty: 473
Skąd: z Leszna
Wysłany: 06-06-2011, 20:16   

Sprawdź..........
_________________
http://projektsimbax.blogspot.com/ <- Taki sobie blog
 
     
Berserker 
Dark Ness


Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy
Wiek: 24
Dołączył: 24 Mar 2009
Posty: 496
Skąd: Bigos
Wysłany: 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


Dołączył: 05 Cze 2011
Posty: 9
Skąd: nieJestemBotem
Wysłany: 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 
Dark Ness


Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy
Wiek: 24
Dołączył: 24 Mar 2009
Posty: 496
Skąd: Bigos
Wysłany: 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.
_________________
 
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012