http://ideone.com/zY4QaI
Czy jest możliwe, żeby funkcja czyszcze() zmieniła wartość zmiennej a funkcji statyczne() ?
Najlepiej przenieś zmienną poziom wyżej, do ciała klasy, wtedy każda metoda tej klasy będzie miała taką możliwość.
No tak, ale robi sie nieco burdel w kodzie. Dla klasy zmienna a nic nie znaczy. W ogóle - moim zdaniem to, co chciałbym zrobić jest awykonalne, ponieważ wyłącznie funkcja statyczne () ma dostep do tej zmiennej, ale może o czymś nie wiem.
Jeśli nie zwrócisz wskaźnika/referencji do tej zmiennej to jest niemożliwe (pomijając bardzo implementation-dependant sztuczki)
Okej, jeszcze jedno pytanie:
http://ideone.com/tubSOa
Ten błąd kompilacji ja rozumiem tak:
w klasie przechowywany jest wskaznik na funkcje. Przy każdym jej wywołaniu, zostaje dołączony obiekt this, wiec wszystko pięknie działa. Jednak deklaracja funkcji jest de facto "poza klasą" (w klasie jest tylko wskaznik), wiec nie mozemy tak tego zrobić. I nic tutaj nie pomoże. Mam rację?
jak chcesz coś defaultowo przypisać to musi być to znane podczas kompilacji; dlatego takie coś działa
niech ktoś mnie poprawi jeżeli się mylę
@gośćabc : no tak, moim zdaniem masz racje. Twój kod jednak robi coś zupełnie innego niż to, co "miałby robić" mój. Chcę tylko dobrze to zrozumieć.
Nie musi: http://melpon.org/wandbox/permlink/yuCLDBe1bBprhQJU
Ten błąd kompilacji ja rozumiem tak:
w klasie przechowywany jest wskaznik na funkcje. Przy każdym jej wywołaniu, zostaje dołączony obiekt this, wiec wszystko pięknie działa. Jednak deklaracja funkcji jest de facto "poza klasą" (w klasie jest tylko wskaznik), wiec nie mozemy tak tego zrobić. I nic tutaj nie pomoże. Mam rację?
W skrócie: Tak. Naprawdę: nie znajduje się poza klasą, ale nie możesz go użyć, bo kompilator nie wie, której instancji użyć (swoją drogą, nie wiem czy coś stoi na przeszkodzie aby to zmienić - chyba nie)
No tak, "poza klasą" było w cudzysłowie. Sądzę, że to mogłoby być zmienione w nowej wersji języka, bo obiekt this i tak jest przekazywany do funkcji. Dzięki ; )
Pewnie tak, ale to raczej nie jest palący problem, szczególnie, że jego obejście jest trywialne: http://ideone.com/z2jziE
No tak, ale znowu - nieco burdel w kodzie.