http://ideone.com/zY4QaI
Czy jest możliwe, żeby funkcja czyszcze() zmieniła wartość zmiennej a funkcji statyczne() ?
statyczne pola funkcji
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 474
Najlepiej przenieś zmienną poziom wyżej, do ciała klasy, wtedy każda metoda tej klasy będzie miała taką możliwość.
- Rejestracja: dni
- Ostatnio: dni
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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
Jeśli nie zwrócisz wskaźnika/referencji do tej zmiennej to jest niemożliwe (pomijając bardzo implementation-dependant sztuczki)
- Rejestracja: dni
- Ostatnio: dni
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ę?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
- Postów: 500
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ę
- Rejestracja: dni
- Ostatnio: dni
@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ć.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
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)
- Rejestracja: dni
- Ostatnio: dni
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 ; )
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
Pewnie tak, ale to raczej nie jest palący problem, szczególnie, że jego obejście jest trywialne: http://ideone.com/z2jziE