Zmiana adresu we wskaźniku przez jego wewnętrzny this ??
Ostatnio zmodyfikowano 2011-06-13 16:00
Mrowqa Temat założony przez niniejszego użytkownika |
Zmiana adresu we wskaźniku przez jego wewnętrzny this ?? » 2011-06-12 19:48:06 Witam!
Mój problem polega na tym:
zrobiłem sobie klasę, która ma metody do zapisu i wczytania. Zrobiłem to tak, by można było przesyłać wskaźniki wskazujące tablicę( np. wsk.zapisz( sciezka, ile_elementowa_tablica ); ). Rozwiązanie było proste:
klasa * wsk = this; <-- do zapisu wystarczyło.
Przy wczytaniu trudniej ( mam wskaźnik ):
Chodzi o to, że na rzecz zerowego elementu wywołuje wczytywanie. wsk przechowuje wczytane dane. Chcę, aby ten wskaźnik, który przechowuje rezultat został przypisany do obiektu, na rzecz która wywołałem metodę.
wsk.wczytaj( sciezka, ile );
this = rezultat;
Chce, aby wsk miał wskazywał na to co rezultatu. Problem w tym, że rezultat to wskaźnik w metodzie, którą wywołał wsk. Jak to zrobić ?? Przypisać thisowi rezultat ?? Przez wartość zwracaną nie mogę ( zwraca coś dla mnie ważnego ). Nie chce także robić jej jako statyczną.
Jest jakieś rozwiązanie ??
Pozdrawiam,
Mrowqa |
|
pekfos |
» 2011-06-12 20:13:45 this jest stały. |
|
Mrowqa Temat założony przez niniejszego użytkownika |
» 2011-06-12 20:29:56 Tak myślałem, że się tak nie da ;/
Więc nie da się tego zrobić w tej funkcji? Musiałbym zrobić to jako funkcję statyczną ? Może inne rozwiązanie ?? :P ( uzyskać adres obiektu i go zmienić może ?? :D )
@edit:
1. this wskazuje na obiekt, a co gdyby go rzutować ?? Osiągnąłbym swój cel ?? :P
2. wsk = this; delete[] wsk; wsk = new obj[ ile ];
Coś mi się zdaje, że teoretycznie gdyby było możliwe, to praktycznie trudne ( komp by na pewno zajął tamte komórki pamięci w tym czasie :P )
3. ( to już tak na boku ) da się ustawić wartość domniemaną parametru metody thisem ?? konkretnie: void X::metoda( X cos = this );
Pozdrawiam,
Mrowqa |
|
absflg |
» 2011-06-13 00:17:23 this to this i nic się z tym nie zrobi. Jeżeli operujesz nie na obiektach, a na wskaźnikach na nich to nie jest to już metoda tego obiektu. Jako, że typ wskaźnika nie ma możliwości zdefiniowania własnych metod to wypada zrobić zwykłą funkcję zaprzyjaźnioną.
this to WSKAŹNIK. I to do tego stały. Więc nie jest typu X , tylko X * const . |
|
Mrowqa Temat założony przez niniejszego użytkownika |
» 2011-06-13 16:00:24 @up wiem :) tylko szukam możliwości. Mniemam, że this, a wskaźnik na rzecz, którego została wywołana metoda to zajmują różne komórki pamięci :D
Wpadłem na rozwiązanie: ( ale nie wiem czy składniowo poprawne :P )
#define x.wczytaj( sciezka, ile ) x.wczytaj( sciezka, ile, int( x ) )
Ewentualnie mogę zmienić nazwę metody, by się różniły, ale czy w oto przeze mnie przedstawiony sposób można to zrobić ?? I czy tam przypadkiem nie powinno być int( & x ) ??
/ zdaję mi się, że trzeba tam postawić ampersand. Konkretnie - chcę w metodzie adres wskaźnika i ustawić go na rezultat wczytywania z pliku :) czyli na inne miejsce w pamięci
Pozdrawiam,
Mrowqa |
|
« 1 » |